Problem v JAVE
Problem v JAVE
Zdravim. mam nasledovny problem: mam vytvorene okno a v nom tlacidlo (nova uloha), ked stlacim tlacidlo otvori sa nove okno kde je formular a dalsie tlacidlo(uloz). ked stlacim toto tlacidlo tak sa spravia nejake akcie a okno sa zavrie a zostane len to povodne okno. problem je v tom ze ked to iste spravim druhy krat tak tie akcie sa vykonaju dva krat, ked treti krat tak tri krat atd. nie je tam ziadny cyklus ani podmienka, takze netusim co s tym je
. budem vdacny za ake kolvek rady
ok tak tu je ten kod , to podstatne z neho:
Kód: Vybrať všetko
public class GUI extends JFrame{
JButton nova_uloha = new JButton("Nova úloha");
JToolBar nastroje = new JToolBar();
public GUI(){
setSize(1000, 500);
setTitle("Plánovač úloh");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
nastroje.setFloatable(false);
nastroje.add(nova_uloha);
nova_uloha.addMouseListener(new NovaUl());
}
private class NovaUl extends MouseAdapter{
JFrame pan3 = new JFrame();
JButton uloz = new JButton("uloz");
public void mouseClicked(MouseEvent e){
pan3.setSize(250, 400);
pan3.setResizable(false);
pan3.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pan3.add(uloz);
uloz.addActionListener(new Uloz());
pan3.setVisible(true);
}
private class Uloz implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("Pridal som ulohu");
pan3.dispose();
pan3.setVisible(false);
}
}
}
}
nepridavaj addActionListener pri kazdom kliknuti mysi, ale v konstruktore!dante18 napísal:ok tak tu je ten kod , to podstatne z neho:
Kód: Vybrať všetko
public class GUI extends JFrame{ JButton nova_uloha = new JButton("Nova úloha"); JToolBar nastroje = new JToolBar(); public GUI(){ setSize(1000, 500); setTitle("Plánovač úloh"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); nastroje.setFloatable(false); nastroje.add(nova_uloha); nova_uloha.addMouseListener(new NovaUl()); } private class NovaUl extends MouseAdapter{ JFrame pan3 = new JFrame(); JButton uloz = new JButton("uloz"); public void mouseClicked(MouseEvent e){ pan3.setSize(250, 400); pan3.setResizable(false); pan3.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); pan3.add(uloz); //uloz.addActionListener(new Uloz()); pan3.setVisible(true); } private class Uloz implements ActionListener{ public void actionPerformed(ActionEvent e){ System.out.println("Pridal som ulohu"); pan3.dispose(); pan3.setVisible(false); } } } }
povedal by som ti aj kde presne, ale tvoja naming konvecia premennych a celkovo ten kod je taky strasny ze sa v tom neda normalne orientovat ... dufam ze to nemas na VPPJ z FIIT
aby som nekritizoval len a troha helfol, nemozes pomenovat JButton ze uloz a potom mat nejaku triedu ze Uloz ... musi to mat nejaky logicky nazov, napr ulozButton alebo buttonUloz ...
takisto, preco buttonu davas mouselistener, ked jedine co pouzivas je mouse clicked??? nad tym by som sa zamyslel ...
takto by to malo (mohlo) vyzerat:
Kód: Vybrať všetko
public class GUI extends JFrame
{
private JButton novaUlohaButton = new JButton("Nova úloha");
private JToolBar nastrojeToolbar = new JToolBar();
public GUI()
{
setSize(1000, 500);
setTitle("Plánovač úloh");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
nastrojeToolbar.setFloatable(false);
nastrojeToolbar.add(novaUlohaButton);
novaUlohaButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
new NovaUl().setVisible(true);
}
});
}
}
class NovaUl extends JFrame
{
private JButton ulozButton = new JButton("uloz");
public NovaUl()
{
setSize(250, 400);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
add(ulozButton);
class akciaZavriOkno implements ActionListener
{
JFrame majitel;
public akciaZavriOkno(JFrame majitel)
{
this.majitel = majitel;
}
public void actionPerformed(ActionEvent e)
{
System.out.println("Pridal som ulohu");
// preco nevypisujes niekam do okna ale do konzoly?
this.majitel.dispose();
this.majitel.setVisible(false);
}
}
ulozButton.addActionListener(new akciaZavriOkno(this));
}
}Vytvorím si okno JFrame a na ňom jeden JPanel (MainPanel)... teraz budem mať rôzne formuláre (JPanel-y) ako napríklad WelcomePanel a EndPanel.
prečo nefunguje MainPanel = new Object(); ?
chcem vlastne jednoducho meniť obsah JPanel-ov podľa príslušnej udalosti.
Kód: Vybrať všetko
public class MainFrame extends javax.swing.JFrame {
public MainFrame() {
super("test");
initComponents();
setVisible(true);
MainPanel = new WelcomePanel();
....
MainPanel = new EndPanel();
}
}
chcem vlastne jednoducho meniť obsah JPanel-ov podľa príslušnej udalosti.