JPanel hiba...
Sziasztok!
Most kezdem tanulni a Java programozást, igazából még nagyon az elején vagyok és csak ismerkedek vele, de van egy probléma amit az istenért sem tudok megoldani, a tanár is csak annyit tudott hozzáfűzni, hogy "ezért kell Linuxon fejleszteni". (Köszi)
Szóval a hiba ott van, hogy egy Frame-ben létrehozok egy panelt, majd egy gombnyomásra ezt le szeretném cserélni egy másik panelra. Működne is a dolog, de csak akkor működik ha a megjelenő ablak szélére kattintok, mintha át akarnám méretezni... És kipróbáltam, hogy Clean and Build-del exportálom majd másik gépen futtatom de így is jelentkezik a hiba. Megírtam a programot egy korábbi verziójú netbeanssel, de ugyan az... Ötlet valakinek? Csatolom hogy mire jutottam... Előre is köszönöm!!
■ Most kezdem tanulni a Java programozást, igazából még nagyon az elején vagyok és csak ismerkedek vele, de van egy probléma amit az istenért sem tudok megoldani, a tanár is csak annyit tudott hozzáfűzni, hogy "ezért kell Linuxon fejleszteni". (Köszi)
Szóval a hiba ott van, hogy egy Frame-ben létrehozok egy panelt, majd egy gombnyomásra ezt le szeretném cserélni egy másik panelra. Működne is a dolog, de csak akkor működik ha a megjelenő ablak szélére kattintok, mintha át akarnám méretezni... És kipróbáltam, hogy Clean and Build-del exportálom majd másik gépen futtatom de így is jelentkezik a hiba. Megírtam a programot egy korábbi verziójú netbeanssel, de ugyan az... Ötlet valakinek? Csatolom hogy mire jutottam... Előre is köszönöm!!
package javaapplication3;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Label extends JFrame implements ActionListener, KeyListener {
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JLabel label4;
private JMenuBar menubar;
private JMenu menu;
private JMenuItem menup1;
private JMenuItem menup2;
private JPanel panel1;
private JPanel panel2;
private JButton btnvalt;
private JButton btnvalt2;
public Label() {
setVisible(true);
setBounds(50, 50, 400, 400);
setTitle("Teszt");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
btnvalt = new JButton("panel 1");
btnvalt2 = new JButton("panel 2");
btnvalt.addActionListener(this);
btnvalt2.addActionListener(this);
btnvalt.setActionCommand("b1");
btnvalt2.setActionCommand("b2");
menubar = new JMenuBar();
menu = new JMenu("Menü");
menubar.add(menu);
menup1 = new JMenuItem("Panel 1");
menup1.setActionCommand("p1");
menup1.addActionListener(this);
menup2 = new JMenuItem("Panel 2");
menup2.setActionCommand("p2");
menup2.addActionListener(this);
panel1 = new JPanel();
panel1.setLayout(new GridLayout(2, 2));
panel2 = new JPanel();
panel2.setLayout(new GridLayout(2, 2));
setLayout(new FlowLayout());
menu.add(menup1);
menu.add(menup2);
setJMenuBar(menubar);
label1 = new JLabel("label 1");
label2 = new JLabel("Label 2");
add(btnvalt);
add(btnvalt2);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("b1")) {
label1 = new JLabel("label 1");
label2 = new JLabel("Label 2");
panel1.add(label1);
panel1.add(label2);
add(panel1);
}
if (e.getActionCommand().equals("b2")) {
remove(panel1);
label3 = new JLabel("label 3");
label4 = new JLabel("Label 4");
panel2.add(label3);
panel2.add(label4);
add(panel2);
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
}
Hogy mukodik?
szia!A következő kóddal
A következő kóddal hívom meg:
Tedd fel
Na a reg már megvolt, amint
Van valami magyar tutorial a használathoz?? :D
update: Közben megtaláltam!! :)
https://gist.github.com/9249185.git
https://gist.github.com/9249149.git
Feher
Tutorial itt: http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1#awesm=~ox4TQaWbMJwUr7
Sejtettem, hogy elbénáztam :)
Hajra
Validate
validate()
-et azactionPerformed()
metódusodba, akkor már működik.Kis comment: szintén írja a javadoc, hogy a validáció elég erőforrásigényes. Emiatt, és mert az
actionPerformed()
mindig új label objektumokat hoz létre és állandóan fel-le rakosgatod benne a panelt, nem éppen optimális. Jobban jársz, ha a konstruktorban rárakosgatod a panelre a labeleket, majd a panelt a framere, mindkét panelt elrejtedpanelX.setVisible(false)
-szal, majd azactionPerformed()
metódusban váltogatod, hogy melyik látszódjon. Valahogy így.Ha rám hallgatsz, java tanulás címszó alatt nem ilyen swinges borzalmakkal vered agyon az időt, hanem a nyelv alapjait tanulod meg. A swing bár része a javanak, de szvsz egy katasztrófa, illetve semmit nem tanít meg abból, hogy mitől java a java. Ha a java az első nyelved, akkor vezérlési szerkezetek, osztály-objektum-interface kikicsoda, láthatóság, típusok, collection framework stb. Én learning java tutorialt ajánlanám első körben (ha megy az angol).
Szia! Köszi a választ, jó
Köszi a választ, jó ötletnek tűnik, egyébként az alapokat már elkezdtem tanulni (osztályok, öröklődés, stb.), csak a gyakorlással jobban meg tudom tanulni, mintha csak a könyv fölött ülnék. Viszont ehhez az kell, hogy programokat csináljak. Szóval kicsit ördögi kör, de azért szépen lassan haladok :)
Köszi még egyszer!
Program