wieder mal das leidige thema listener

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi,

warum funktioniert denn mein JButton schon wieder nicht:

Code:
public class Main extends JFrame {

    private ActionPanel ap;
    private InfoPanel ip;

    public Main(String title) {

        super(title);

        ap = new ActionPanel();
        add(ap, BorderLayout.NORTH);

        ip = new InfoPanel();
        add(ip, BorderLayout.SOUTH);

        pack();
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {

                new Main("test").setVisible(true);
            }
        });
    }

    class ActionPanel extends JPanel implements MouseListener {

        ActionPanel() {

            setPreferredSize(new Dimension(800, 600));    
            addMouseListener(this);
        }

        public void mouseClicked(MouseEvent e) {

                // tue etwas, das funktioniert auch einwandfrei !

        }
    }

    class InfoPanel extends JPanel implements MouseListener {

        private JButton go;
        
        InfoPanel(){
            
            setPreferredSize(new Dimension(800,100));
            setBackground(Color.gray);
            setLayout(null);
            
            go = new JButton("START");
            go.setBounds(50,20,100,50);
            add(go);
            
            addMouseListener(this);
        }

        public void mouseClicked(MouseEvent e) {
            System.out.println("bla");     // <--------- wird nie angezeigt!
            if (e.getSource().equals(go)) {
                System.out.println("ok");  // <--------- das hier erst recht nicht!
            }
        }
}

habe bereits wieder einiges mit setFocusalbe und requestFocues(inWindow)() versucht, aber nix geht.

Jedes Panel hat doch seinen eigneen Listener, wieso kriegt er das mitm Klick nicht hin?

ps: ich weiss inzwischen dass man aus irgendeinem Grund(den kenne ich aber nicht) besser ActionListener für Buttons benutzen soll, aber in einem anderen Programm von mir gings auch so, aber jetzt nicht ?

merci
 
abgesehen von noch nicht implementierten MouseListener-Operationen erscheint bei mir Bla beim Klick auf das JPanel,

wenn du den Buttion drückst, dann reagierst der MouseListener des JPanels selbstverständlich nicht,
für den Button musst du den gleichen oder einen anderen MouseListener separat adden
 
Hi,

allgemein muss ich sagen dass dein Code viel komplizierter ist als nötig. 3 Klassen für diese Thematik ist einfach zu viel.

Ich kann dir allgemein sagen wie ich das gemacht hätte

1. Button

Code:
JButton DerButton = new JButton("ButtonText");
DerButton.setActionCommand("EinActionCommand");
DerButton.addActionListener(this); // <-- Wenn in der selben klasse

2. der Listener
Code:
public void actionPerformed(ActionEvent aActionEvent) 
{
   if ("EinActionCommand".equals(aActionEvent.getActionCommand()))
   {
      // tu was feines
   }		
}
 
achso okay ich wusste nicht dass der Listener dann fürs Panel ist. Danke euch

ps: das erscheint so kompliziert weils ein teil aus dem programm ist, deshalb soviele Klassen usw.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben