Googlehupf
Erfahrenes Mitglied
Hallo!
Ich/Wir haben erst vor 2 Wochen angefangen mit Java und gleich ein bisschen Swing kennengelernt.
Nun habe ich 2 Aufgaben, die ich erledigen muss:
Übung 1: Fenster mit Button. Wenn Button gedrückt wird dann soll es von Rot auf Grün bzw. von Grün auf Rot wechseln.
Übung 2: 2 Buttons. Einer Grün(text) und der andere Rot(text). Soll immer der button(text: grün bzw. rot) der den aktuellen Hintergrund(rot bzw. grün) entspricht gesperrt sein. Also, wenn der Hintergrund grün ist, soll jener Button gesperrt sein wo "grün" drauf steht und das gleiche mit rot.
Ich kann die Aufgaben nicht besser beschreiben, aber wenn ihr euch den Code anschaut dann wirds sicher klar^^.
Die 1. Aufgabe funktioniert ja einwandfrei, aber bei der 2. hab ich nicht wirklich eine Ahnung wie ich das machen soll. Könnt ihr mir paar Tipps geben bitte?
Andere Frage:
Es geht um ActionListener. ActionListener funktioniert ja nur bei JButton, also wenn eine Schaltfläche gedruckt wird bekommt das ActionListener mit, richtig?
Aber wie funktioniert das jetzt intern im PC, bei der Programmausführung?
In C ist das irgendwie alles viel einfach zu verstehn, das Programm wird von oben bis unten im main() einfach durchgearbeitet, klar ist es in Java ähnlich, aber in C einfach zu verstehn finde ich.
Hier mal ein Bsp-Code dazu:
Jedes mal wenn die Schaltfläche gedrückt wird wird hinaufgezählt. Muss man den, wenn man den ActionListener verwenden will immer so schreiben? mit dem actionPerformed etc.? Also diese 2 Blöcke da?
Da steht ja button1_ActionListener wird implementiert in ActionListener, oder von ActioListener? Wie sagt man das genau? Was heißt "implementieren" in diesem Fall? Ähnlich wie extends(ableiten)?
Kann ich das so beschreiben: Wenn man eine Schaltfläche drückt, dann wird die Klasse button1_ActionListener aufgerufen, oder das ActionPerformed und dies kann man als "Endlosschleife" sehn?
Danke im voraus!
mfg
Ich/Wir haben erst vor 2 Wochen angefangen mit Java und gleich ein bisschen Swing kennengelernt.
Nun habe ich 2 Aufgaben, die ich erledigen muss:
Übung 1: Fenster mit Button. Wenn Button gedrückt wird dann soll es von Rot auf Grün bzw. von Grün auf Rot wechseln.
Übung 2: 2 Buttons. Einer Grün(text) und der andere Rot(text). Soll immer der button(text: grün bzw. rot) der den aktuellen Hintergrund(rot bzw. grün) entspricht gesperrt sein. Also, wenn der Hintergrund grün ist, soll jener Button gesperrt sein wo "grün" drauf steht und das gleiche mit rot.
Ich kann die Aufgaben nicht besser beschreiben, aber wenn ihr euch den Code anschaut dann wirds sicher klar^^.
Die 1. Aufgabe funktioniert ja einwandfrei, aber bei der 2. hab ich nicht wirklich eine Ahnung wie ich das machen soll. Könnt ihr mir paar Tipps geben bitte?
Java:
package uebg01;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MainFrame extends JFrame {
private JPanel contentPane;
private JButton button1;
private JButton button2;
private JPanel panel1;
public MainFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
FrameInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void FrameInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(new BorderLayout());
setSize(new Dimension(400, 300));
setTitle("Frame Title");
panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
panel1.setBackground(Color.green);
button1 = new JButton();
button2 = new JButton();
button1.setText("red");
button2.setText("green");
button1.setFont(new Font("Calibri", Font.BOLD, 15));
button2.setFont(new Font("Calibri", Font.BOLD, 15));
button1.addActionListener(new Button1_ActionListener());
button2.addActionListener(new Button2_ActionListener());
panel1.add(button1);
panel1.add(button2);
contentPane.add(panel1, BorderLayout.CENTER);
button2.setEnabled(false);
}
private class Button1_ActionListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
if (panel1.getBackground() == Color.green) {
panel1.setBackground(Color.red);
button1.setText("green");
button2.setEnabled(true);
button1.setEnabled(false);
} else {
button1.setEnabled(false);
panel1.setBackground(Color.green);
button1.setText("red");
button2.setEnabled(false);
}
}
}
private class Button2_ActionListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
if (panel1.getBackground() == Color.green) {
panel1.setBackground(Color.red);
button2.setText("green");
button2.setEnabled(true);
button1.setEnabled(false);
} else {
button1.setEnabled(false);
panel1.setBackground(Color.green);
button2.setText("red");
button2.setEnabled(false);
}
}
}
}
Andere Frage:
Es geht um ActionListener. ActionListener funktioniert ja nur bei JButton, also wenn eine Schaltfläche gedruckt wird bekommt das ActionListener mit, richtig?
Aber wie funktioniert das jetzt intern im PC, bei der Programmausführung?
In C ist das irgendwie alles viel einfach zu verstehn, das Programm wird von oben bis unten im main() einfach durchgearbeitet, klar ist es in Java ähnlich, aber in C einfach zu verstehn finde ich.
Hier mal ein Bsp-Code dazu:
Java:
private class button1_ActionListener implements ActionListener {
private int i;
public void actionPerformed(ActionEvent ae) {
i++;
label1.setText("Button gedrückt:"+i+" mal gedrückt");
}
}
Jedes mal wenn die Schaltfläche gedrückt wird wird hinaufgezählt. Muss man den, wenn man den ActionListener verwenden will immer so schreiben? mit dem actionPerformed etc.? Also diese 2 Blöcke da?
Da steht ja button1_ActionListener wird implementiert in ActionListener, oder von ActioListener? Wie sagt man das genau? Was heißt "implementieren" in diesem Fall? Ähnlich wie extends(ableiten)?
Kann ich das so beschreiben: Wenn man eine Schaltfläche drückt, dann wird die Klasse button1_ActionListener aufgerufen, oder das ActionPerformed und dies kann man als "Endlosschleife" sehn?
Danke im voraus!
mfg