Hallo,
ich bin noch ein ziemlicher Swing-Anfänger und habe folgendes Problem:
Ich möchte bei unten stehendem Programm zwei "EinAddierer" auf meinem JFrame platzieren.
Ich habe versucht die 2 Addierer über den LayoutManager an unterschiedlichen Stellen zu platzieren, aber bei der Ausgabe erscheint immer nur der 2te Addierer auf dem Frame.
Btw: Die Methoden um das Layout zu setzten (setLocation...) sind nur mal zum testen, die kommen dann später weg
Ich habe mir schon fast gedacht, dass es nicht so einfach ist ???:L aber vll. ist es ja auch ganz banal :?:
Danke schonmal...
ich bin noch ein ziemlicher Swing-Anfänger und habe folgendes Problem:
Ich möchte bei unten stehendem Programm zwei "EinAddierer" auf meinem JFrame platzieren.
Ich habe versucht die 2 Addierer über den LayoutManager an unterschiedlichen Stellen zu platzieren, aber bei der Ausgabe erscheint immer nur der 2te Addierer auf dem Frame.
Btw: Die Methoden um das Layout zu setzten (setLocation...) sind nur mal zum testen, die kommen dann später weg
Ich habe mir schon fast gedacht, dass es nicht so einfach ist ???:L aber vll. ist es ja auch ganz banal :?:
Danke schonmal...
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Rechner extends JFrame {
public Rechner() {
super("Ein einfacher Rechner");
//erster EinAddierer
EinAddierer addierer1 = new EinAddierer();
addierer1.setVisible(true);
addierer1.setLocation(20,20);
getContentPane().add(addierer1);
//zweiter EinAddierer
EinAddierer addierer2 = new EinAddierer();
addierer2.setVisible(true);
addierer2.setLocation2(40,40);
getContentPane().add(addierer2);
}
public static void main (String[] args) {
Rechner rechner1 = new Rechner();
rechner1.setLocation(310,200);
//setzt die Position des Frames (horizontale Ausrichtung, vertikale Ausrichtung)
rechner1.setSize(600,400);
rechner1.setVisible(true);
}
}
class EinAddierer extends JPanel {
JPanel eingabePanel1;
JPanel eingabePanel2;
JPanel buttonPanel;
JButton rechne;
JTextField eingabe1;
JTextField eingabe2;
JLabel ergebnis;
double eingabewert1 = 0;
//Kontruktor für den Addierer
public EinAddierer() {
eingabePanel1 = new JPanel();
eingabePanel2 = new JPanel();
buttonPanel = new JPanel();
rechne = new JButton("Enter");
rechne.addMouseListener(new MyAdapter(this));
eingabe1 = new JTextField(20);
eingabe2 = new JTextField(20);
ergebnis = new JLabel("Ergebnis");
add(eingabePanel1);
add(eingabePanel2);
add(buttonPanel);
eingabePanel1.add(eingabe1);
eingabePanel2.add(eingabe2);
buttonPanel.add(rechne);
buttonPanel.add(ergebnis);
}
//Position des ersten Addierers setzen
public void setLocation(int hgap, int vgap) {
setLayout(new FlowLayout(FlowLayout.LEFT,hgap,vgap));
}
//Position des zweiten Addierers setzen
public void setLocation2(int hgap, int vgap) {
setLayout(new FlowLayout(FlowLayout.RIGHT,hgap,vgap));
}
public void add() {
double z1 = 0;
double z2 = 0;
double erg = 0;
try {
z1 = Double.parseDouble(eingabe1.getText());
z2 = Double.parseDouble(eingabe2.getText());
}
catch (NumberFormatException e) {
System.out.println("Bitte nur Zahlen eingeben!");
}
erg = z1 + z2;
ergebnis.setText ("" + erg);
}
//Methode für die Addition
//das Ergebnis wird in den JLabel-String "ergebnis" geschrieben
public void getNewColor() {
rechne.setForeground(Color.blue);
}
public void getOldColor() {
rechne.setForeground(Color.black);
}
public void getNewBackgroundColor() {
rechne.setBackground(Color.pink);
}
public void getOldBackgroundColor() {
rechne.setBackground(Color.white);
}
} //Methode für die MouseEvents
class MyAdapter extends MouseAdapter implements MouseListener {
EinAddierer addierer;
public MyAdapter(EinAddierer addierer) {
this.addierer = addierer;
}
public void mouseClicked(MouseEvent me){
addierer.add();
}
//die Maustaste wurde gedrückt und wieder losgelassen
public void mouseEntered(MouseEvent me){
addierer.getNewColor();
}
//der Mauszeiger betritt die Komponente
public void mouseExited(MouseEvent me) {
addierer.getOldColor();
}
//der Mauszeiger verlässt die Komponente
public void mousePressed(MouseEvent me) {
addierer.getNewBackgroundColor();
}
//die Maustaste wurde gedrückt
public void mouseReleased(MouseEvent me) {
addierer.getOldBackgroundColor();
}
//die Maustaste wurde losgelassen
}