JInternalFrame vs Klasa

0

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();
}
0

ZAŁATWIONE!

  1. W klasie Figury należało zmienić 'extends JFrame' na 'extends JInternalFrame'
  2. Dodać obiekt klasy Figury do klasy Menu Glowne
  3. Następnie dodać ten obiekt do kontenera (w moim wypadku jest to JDesktopPane 'desktop').

Voilà!

Taka prosta głupota. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1