Durchführung ActionListener innerhalb der JPanel
Hier, wollte ich eine Aktion ausführen, wenn eine Taste gedrückt wird, es ist ganz einfach, aber das Hauptproblem ist, durchgeführt werden, innerhalb einer erweiterten JPanel.
Es gibt vielleicht eine einfache Lösung wie " add action listener Taste und ruft actionperformed-Ereignis, aber mein Fall ist das nicht so, ich habe 4 Tasten(t1,t2,t3,t4) alle diese Tasten werden funktioniert innerhalb eines einzelnen ActionPerfomed Ereignis ae (siehe das segment code). Und später sehen Sie den code, der ruft einen anderen JButtons tr und hf ruft den actionlistener und in actionperformed Veranstaltungen.
für klare Verständlichkeit können Sie einen Blick auf den code...
class Tracker extends JPanel
{
public static void main(String[] args) {
new Tracker(); }
public Tracker()
{
JButton tr=new JButton("TRACKER APPLET");
tr.setBounds(720,170,100,20);
JButton rf=new JButton("REFRESH");
rf.setBounds(200,170,100,20);
boolean tc1=false,tc2=false,tc3=false,tc4=false;
JButton t1=new JButton(" ");
t1.addActionListener(this);
JButton t2=new JButton(" ");
t2.addActionListener(this);
JButton t3=new JButton(" ");
t3.addActionListener(this);
JButton t4=new JButton(" ");
t4.addActionListener(this);
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==t1)
{
tc1=true;
}
if(ae.getSource()==t2)
{
tc2=true;
}
if(ae.getSource()==t3)
{
tc3=true;
}
if(ae.getSource()==t4)
{
tc4=true;
}
}
tr.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex){}
catch(InstantiationException ex){}
catch(IllegalAccessException ex){}
catch(UnsupportedLookAndFeelException ex) {}
//some food here....
}
});
}
});
rf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
EventQueue.invokeLater(new Runnable() {
@Override
public void run()
{
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (ClassNotFoundException ex){}
catch(InstantiationException ex){}
catch(IllegalAccessException ex){}
catch(UnsupportedLookAndFeelException ex) {}
//some extra work runs here...
}
});
}
});
add(tr);
add(rf);
add(t1);
add(t2);
add(t3);
add(t4);
}
Mein problem ist hier, ich konnte nicht implementiert ActionListener, wie die main-Klasse, die bereits die Erweiterung JPanel.
Ich versuche nur zu funktionieren mit Jbuttons :: wollte perfom eine einzelne Aktion aus, wenn die Tasten(t1|t2|t3|t4) und die JButtons(tr - |rf) gedrückt werden, in eine chronologische Reihenfolge..
vielen Dank im Voraus..
Gibt es da wirklich keine Notwendigkeit einer Verlängerung der
JPanel
? ich.e können Sie nicht einfach eine Instanz, und fügen Sie die Schaltflächen etc, die
InformationsquelleAutor ram | 2013-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code enthält einige Methoden in Methoden...
Dieser code funktioniert:
ich habe noch eine Frage, ist es richtig, einen gemeinsamen actionperformed-event für 4 Jbuttons(t1...) und individuelle actionperformed Veranstaltungen für hf-und tf-JButtons??? Dank
ist es richtig, einen gemeinsamen actionperformed-event für 4 Jbuttons(t1...) und individuelle actionperformed Veranstaltungen für hf-und tf-JButtons??? wenn es Allgemeine Funktionen, die ich.e keine
if(ae.getSource == button)
als durch alle bedeutet, dass diese gefördert wird, wie es entfernt doppelte code. Ich nie wieif(ae.getSource()==button)
wie das fördert enge Kopplung zwischen denActionListener
und die zugehörige Taste(s). Eher, eine separate Aktion als. Auch würde ich nicht empfehlen ausführen einActionListener
auf eine Komponente, es sei denn, die Komponente "sharing" - Funktionalität oder deren Klassen alleinigen Zweck.InformationsquelleAutor Aubin