Hallo,
ich brauche Eure hilfe mit dem Action Handling. Mein Projekt ist um einiges groesser, nachdem ich gesehn hab dass man vieles auch einfacher machen kann (sollte !), wollte ich das Projekt umstrukturieren. Nun bekam ich neue Probleme. Ich habe nun versucht ein kl. Bsp. zu schreiben (s.u.) und wenn mir jemand dabei weiterhelfen kann die fixme-Stellen zu loesen, waeren einige meiner Fragen auch schon geklaert. Danke schon mal !!!
Das Ding unten sollte soweit funktionieren (Grafik) bis eben auf die letzte Klasse. Die Stellen, bei denen ich kA hab wie ich das machen soll, hab ich mit "fixme" bezeichnet. Es wuerde mir schon helfen, nur einige der fixme Stellen exemplarisch zu loesen oder mir an Hand von etwas Code zu erklaeren, wie man das richtig angehen wuerde.
Genauso freu ich mich immer auch ueber konstruktive Kritik und Anregungen zu meinem Design der Klassen (ich hoffe keiner von Euch bekommt Augenkrebs wenn er den Code unten sieht :autsch: ).
ich brauche Eure hilfe mit dem Action Handling. Mein Projekt ist um einiges groesser, nachdem ich gesehn hab dass man vieles auch einfacher machen kann (sollte !), wollte ich das Projekt umstrukturieren. Nun bekam ich neue Probleme. Ich habe nun versucht ein kl. Bsp. zu schreiben (s.u.) und wenn mir jemand dabei weiterhelfen kann die fixme-Stellen zu loesen, waeren einige meiner Fragen auch schon geklaert. Danke schon mal !!!
Das Ding unten sollte soweit funktionieren (Grafik) bis eben auf die letzte Klasse. Die Stellen, bei denen ich kA hab wie ich das machen soll, hab ich mit "fixme" bezeichnet. Es wuerde mir schon helfen, nur einige der fixme Stellen exemplarisch zu loesen oder mir an Hand von etwas Code zu erklaeren, wie man das richtig angehen wuerde.
Genauso freu ich mich immer auch ueber konstruktive Kritik und Anregungen zu meinem Design der Klassen (ich hoffe keiner von Euch bekommt Augenkrebs wenn er den Code unten sieht :autsch: ).
Code:
package action01;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
// Main Panel - resp. for jframe
public class MainPanel extends JPanel{
// var
private static Panel1 p1;
private static Panel2 p2;
private static int iNumber;
// ctor
public MainPanel(){
super(new GridLayout(1,0));
iNumber = 0;
p1 = new Panel1();
p2 = new Panel2();
}
// func
public static void createAndShowGUI(){
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame(String.valueOf(iNumber));
// fixme - how to add iNumber to the MyActionListener, so that it can be changed ?
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocation(300,100);
MainPanel ga = new MainPanel();
ga.add(p1.drawP1());
ga.add(p2.drawP2());
ga.setOpaque(true);
frame.setContentPane(ga);
frame.pack();
frame.setVisible(true);
}
///////////////////////////////////////////////////////////
// main
public static void main(String[]args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
package action01;
import java.awt.GridLayout;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
// radio button panel: one, two
public class Panel1 extends JPanel{
// var
JRadioButton jbOne, jbTwo, jbThree;
// ctor
public Panel1(){
super(new GridLayout(1,0));
}
// func
public Panel1 drawP1(){
jbOne = new JRadioButton("one");
jbTwo = new JRadioButton("two");
// fixme - how to add them to the MyActionListener ?
ButtonGroup group = new ButtonGroup();
group.add(jbOne);
group.add(jbTwo);
jbOne.setSelected(true);
this.add(jbOne);
this.add(jbTwo);
return this;
}
}
package action01;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
// jbuttons: ok, exit
public class Panel2 extends JPanel{
// var
JButton butOk, butExit;
// ctor
public Panel2(){
super(new GridLayout(2,0));
}
//func
public Panel2 drawP2(){
butOk = new JButton("OK");
butExit = new JButton("Exit");
// fixme - how to add them to the MyActionListener ?
this.add(butOk);
this.add(butExit);
return this;
}
}
package action01;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// ... now real fun starts:
class MyActionListener implements ActionListener{
// var
// ctor
MyActionListener(){}
// func
public void actionPerformed(ActionEvent ae) {
if((ae.getSource()).equals(Panel-1-Obj.jbOne)){
// fixme - how to ask for an attribute of an other object?
MainPanel-Obj.iNumber = 1;
// fixme - might a get/setter pair for iNumber in MainPanel be better?
// fixme - how to set title of MainPanels obj to "String.valueOf(iNumber)"?
}else if((ae.getSource()).equals(Panel-1-Obj.jbTwo)){
// fixme - how to ask for an attribute of an other object?
MainPanel-Obj.iNumber = 2;
// fixme - might a get/setter pair for iNumber in MainPanel be better?
// fixme - how to set title of MainPanels obj to "String.valueOf(iNumber)"?
}else if((ae.getSource()).equals(Panel-2-Obj.Ok)){
// fixme - how to ask for an attribute of an other object?
System.out.println("Hello Work!");
}else if((ae.getSource()).equals(Panel-2-Obj.Exit)){
// fixme - how to ask for an attribute of an other object?
System.exit(1);
}
}
}