Witam, jestem mocno początkujący w te klocki i mam pewien problem z JFrame a dokładniej z JInternalFrame. Tworze sobie takie jakby MENU GŁÓWNE: teraz chcę aby po naciśnięciu przycisku Figury automatycznie tworzyło mi się okienko wewnątrz okna MENU GŁÓWNE o klasie Figury (mam tam porozmieszczane buttony, textfieldy, labele, metody obliczania pól i obwodów figur). Skopiowanie klasy FIGURY do klasy MENU GŁÓWNE i stworzenie tego wewnętrznego okna działa, sprawdzałem. Ale po co ja mam kopiować i mieć tonę kodu w jednym pliku jak mógłbym z klasy MENU GŁÓWNE odwołać się tylko do metody Figury() z klasy FIGURY. Mógłbym prawda ?
KLASA FIGURY:
import java.awt.Component;
public class Figury extends JFrame implements ActionListener
{
private JTextField tfPole, tfObwod, tfBokA, tfBokB, tfWys, tfPromien;
private JLabel lPole, lObwod, lTytul, lParametry, lBokA, lBokB, lWys, lPromien;
private JComboBox comboWyborFigury;
private JButton bOblicz, bWyczysc;
private double bokA, bokB, wys, promien, pole, obwod;
public Figury()
{
setSize(800,800);
setTitle("Obliczanie wzorów figur geometrycznych");
setLayout(null);
lTytul = new JLabel("FIGURY");
lTytul.setBounds(30, 30, 150, 22);
lTytul.setFont(new Font("SansSerif", Font.BOLD, 20));
add(lTytul);
lParametry = new JLabel("Podaj parametry: ");
lParametry.setBounds(30, 60, 100, 20);
add(lParametry);
lBokA = new JLabel("Bok A");
lBokA.setBounds(50, 90, 100, 20);
add(lBokA);
tfBokA = new JTextField();
tfBokA.setBounds(50, 115, 100, 20);
add(tfBokA);
lBokB = new JLabel("Bok B");
lBokB.setBounds(160, 90, 100, 20);
add(lBokB);
tfBokB = new JTextField();
tfBokB.setBounds(160, 115, 100, 20);
add(tfBokB);
lWys = new JLabel("Wysokość");
lWys.setBounds(270, 90, 100, 20);
add(lWys);
tfWys = new JTextField();
tfWys.setBounds(270, 115, 100, 20);
add(tfWys);
lPromien = new JLabel("Promień");
lPromien.setBounds(380, 90, 100, 20);
add(lPromien);
tfPromien = new JTextField();
tfPromien.setBounds(380, 115, 100, 20);
add(tfPromien);
bOblicz = new JButton("Oblicz");
bOblicz.setBounds(30, 160, 100, 20);
add(bOblicz);
bOblicz.addActionListener(this);
bWyczysc = new JButton("Wyczyść");
bWyczysc.setBounds(150, 160, 100, 20);
add(bWyczysc);
bWyczysc.addActionListener(this);
lPole = new JLabel("Pole to:");
lPole.setBounds(50, 200, 200, 20);
add(lPole);
tfPole = new JTextField();
tfPole.setBounds(50, 230, 200, 20);
add(tfPole);
lObwod = new JLabel("Obwod to:");
lObwod.setBounds(50, 270, 200, 20);
add(lObwod);
tfObwod = new JTextField();
tfObwod.setBounds(50, 300, 200, 20);
add(tfObwod);
comboWyborFigury = new JComboBox();
comboWyborFigury.setBounds(300, 40, 150, 25);
comboWyborFigury.addItem("Wybierz Figurę");
comboWyborFigury.addItem("Kwadrat");
comboWyborFigury.addItem("Prostokąt");
comboWyborFigury.addItem("Trójkąt");
comboWyborFigury.addItem("Koło");
comboWyborFigury.addItem("Trapez R");
comboWyborFigury.addActionListener(this);
add(comboWyborFigury);
tfPole.setEnabled(false);
tfObwod.setEnabled(false);
tfBokA.setEnabled(false);
tfBokB.setEnabled(false);
tfPromien.setEnabled(false);
tfWys.setEnabled(false);
}
public static void main(String[] args)
{
Figury app = new Figury();
app.setVisible(true);
app.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
KLASA MENU GŁÓWNE:
public class MenuGlowne extends JFrame implements ActionListener
{
JDesktopPane desktop = new JDesktopPane();
JFrame ramkaGlowna;
JInternalFrame ramkaFigury;
private JMenuBar menuBar;
private JMenu menuPlik, menuNarzedzia, menuPomoc;
private JMenuItem mOtworz, mZapisz, mWyjscie, mFigury, mSpalanie, mInfo, mCredits;
private JTextField tfPole, tfObwod, tfBokA, tfBokB, tfWys, tfPromien;
private JLabel lPole, lObwod, lTytul, lParametry, lBokA, lBokB, lWys, lPromien;
private JComboBox comboWyborFigury;
private JButton bOblicz, bWyczysc;
private double bokA, bokB, wys, promien, pole, obwod;
public MenuGlowne()
{
ramkaGlowna = new JFrame("Program do nauki Javy - Menu Główne");
//setTitle("Program do nauki Javy - Menu Główne");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
// Tworzymy zmienną typu Dimensions i dzięki Toolkitowi możemy zdobyć informacje na temat wielkości ekranu na którym obecnie pracujemy
int polozenieRamki = 100;
ramkaGlowna.setBounds(polozenieRamki,polozenieRamki,screenSize.width - polozenieRamki*2 ,screenSize.height - polozenieRamki*2);
// Ustawiamy kolejne parametry okienka tak aby było o 100 mniejsze niż natywna wielkość ekranu
ramkaGlowna.setLayout(null);
ramkaGlowna.setDefaultCloseOperation(EXIT_ON_CLOSE);
ramkaGlowna.setVisible(true);
menuBar = new JMenuBar();
menuPlik = new JMenu("Plik");
menuNarzedzia = new JMenu("Narzedzia");
menuPomoc = new JMenu("Pomoc");
ramkaGlowna.setJMenuBar(menuBar);
menuBar.add(menuPlik);
menuBar.add(menuNarzedzia);
menuBar.add(menuPomoc);
/* submenu PLIK */
mOtworz = new JMenuItem("Otwórz");
mOtworz.addActionListener(this);
mZapisz = new JMenuItem("Zapisz");
mZapisz.addActionListener(this);
mWyjscie = new JMenuItem("Wyjście");
mWyjscie.addActionListener(this);
/*dodajemy itemy do submenu plik */
menuPlik.add(mOtworz);
menuPlik.add(mZapisz);
menuPlik.add(mWyjscie);
/*submenu Narzedzia*/
mFigury = new JMenuItem("Figury");
mFigury.addActionListener(this);
mSpalanie = new JMenuItem("Spalanie");
mSpalanie.addActionListener(this);
/* dodajemy itemy do submenu Narzedzia*/
menuNarzedzia.add(mFigury);
menuNarzedzia.add(mSpalanie);
}
public static void main(String[] args)
{
MenuGlowne ramkaGlowna = new MenuGlowne();
}