[JAVA=42]
public class ZeichneFiguren extends JFrame implements ActionListener {
// ATTRIBUTE
private JButton alleSchalter[]= { // ein Feld von Schaltern
new JButton("Löschen"),
new JButton("Linie"),
new JButton("Rechteck"),
new JButton("Oval") };
private JToolBar toolBar = new JToolBar(); // Für Schalter: Schalterleiste
private MyJPanel malFläche = new MyJPanel(); // Unsere Zeichenfläche
// KONSTRUKTOR
public ZeichneFiguren(String titel) {
super(titel);
setSize(300, 200);
add (toolBar, BorderLayout.NORTH); // Toolbar oben (=Norden) einfügen...
add(malFläche, BorderLayout.CENTER); // Malfäche in der Mitte einfügen...
for (JButton schalter : alleSchalter) {
toolBar.add(schalter); // Schalter auf die Toolbar kleben
// Instanz von ZeichneFiguren behandelt die ActionEvents jedes Schalters
schalter.addActionListener(this);
}
setVisible(true); // NIE VERGESSEN!!!
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
// SO werden die ActionEvents behandelt
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand()); // warum auch immer, gibt dies den
// Text-String des Buttons aus
malFläche.setText(e.getActionCommand());
}
public static void main(String[] args) {
new ZeichneFiguren("ZeichneFiguren");
}
}
[/code]
[JAVA=42]
public class MyJPanel extends JPanel {
private String text = "";
public MyJPanel () {
// Beobachten Sie den Effekt, wenn die folgende Zeile fehlt...
setOpaque (false);
}
public void paint(Graphics g) {
g.drawString(text, 10, 10);
}
public void setText(String text) {
this.text = text;
// repaint: erzwingt den Neuaufbau des Bildschirms
// Achtung: Dies erfolgt im Umweg über die Event-Queue!
repaint(); // ruft die paint() der Komponente erneut auf (asap)
}
}
[/code]
Also mir ist nicht klar warum, warum e.getActionCommand() gerade den text-String der ActionEvent-Quelle - also vom jeweiligen Button - zurückgibt. Warum ist das so, wo ist das definiert, dokumentiert? Vor allem, wo wird das ActionCommand des Buttons gesetzt? Danke schonmal...
public class ZeichneFiguren extends JFrame implements ActionListener {
// ATTRIBUTE
private JButton alleSchalter[]= { // ein Feld von Schaltern
new JButton("Löschen"),
new JButton("Linie"),
new JButton("Rechteck"),
new JButton("Oval") };
private JToolBar toolBar = new JToolBar(); // Für Schalter: Schalterleiste
private MyJPanel malFläche = new MyJPanel(); // Unsere Zeichenfläche
// KONSTRUKTOR
public ZeichneFiguren(String titel) {
super(titel);
setSize(300, 200);
add (toolBar, BorderLayout.NORTH); // Toolbar oben (=Norden) einfügen...
add(malFläche, BorderLayout.CENTER); // Malfäche in der Mitte einfügen...
for (JButton schalter : alleSchalter) {
toolBar.add(schalter); // Schalter auf die Toolbar kleben
// Instanz von ZeichneFiguren behandelt die ActionEvents jedes Schalters
schalter.addActionListener(this);
}
setVisible(true); // NIE VERGESSEN!!!
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
// SO werden die ActionEvents behandelt
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand()); // warum auch immer, gibt dies den
// Text-String des Buttons aus
malFläche.setText(e.getActionCommand());
}
public static void main(String[] args) {
new ZeichneFiguren("ZeichneFiguren");
}
}
[/code]
[JAVA=42]
public class MyJPanel extends JPanel {
private String text = "";
public MyJPanel () {
// Beobachten Sie den Effekt, wenn die folgende Zeile fehlt...
setOpaque (false);
}
public void paint(Graphics g) {
g.drawString(text, 10, 10);
}
public void setText(String text) {
this.text = text;
// repaint: erzwingt den Neuaufbau des Bildschirms
// Achtung: Dies erfolgt im Umweg über die Event-Queue!
repaint(); // ruft die paint() der Komponente erneut auf (asap)
}
}
[/code]
Also mir ist nicht klar warum, warum e.getActionCommand() gerade den text-String der ActionEvent-Quelle - also vom jeweiligen Button - zurückgibt. Warum ist das so, wo ist das definiert, dokumentiert? Vor allem, wo wird das ActionCommand des Buttons gesetzt? Danke schonmal...