Hallo,
In einer Applikation möchte ich von Klasse A auf Werte der Klasse B zugreifen und ungekehrt.
Beispiel:
Ich habe 3 Klassen: Button01 abgeleitet von JButton, Button02 abgeleitet von JButton und ein JFrame zur Anzeige der 2 Butten.
Beim click auf Button01 soll der Text von Button02 ausgegeben werden und umgekehrt.
Der unten angefügte Code zeigt das Beispiel.
Normalerweise wird das nicht wie aufgeführt gelöst, sonder ohne neue Klassen von JButton, aber mir geht es um das Prinzip 2 Klassen gegenseitig zu referenzieren.
Ist das überhaupt möglich?
Gruss Max
In einer Applikation möchte ich von Klasse A auf Werte der Klasse B zugreifen und ungekehrt.
Beispiel:
Ich habe 3 Klassen: Button01 abgeleitet von JButton, Button02 abgeleitet von JButton und ein JFrame zur Anzeige der 2 Butten.
Beim click auf Button01 soll der Text von Button02 ausgegeben werden und umgekehrt.
Der unten angefügte Code zeigt das Beispiel.
Normalerweise wird das nicht wie aufgeführt gelöst, sonder ohne neue Klassen von JButton, aber mir geht es um das Prinzip 2 Klassen gegenseitig zu referenzieren.
Ist das überhaupt möglich?
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class forward extends JFrame{
MyButton01 b01;
MyButton02 b02;
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
public forward() {
Container pane = getContentPane();
b01 = new MyButton01(b02);
b02 = new MyButton02(b01);
pane.setLayout(null);
pane.add(b01);
pane.add(b02);
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
public static void main(String args[])
{
forward app = new forward();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setBounds(100,100,340,100);
app.setVisible(true);
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
}
//=============================================================================================================================================================
class MyButton01 extends JButton implements ActionListener{
MyButton02 mb_02;
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
public MyButton01(MyButton02 mb02){
super("Button 01");
setBounds(10,10,150,50);
addActionListener(this);
mb_02 = mb02;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
public void actionPerformed(ActionEvent e){
System.out.println("Button01 gedrückt - getText vom Button02: " + mb_02.getText()); // <- NullPointerException, warscheinlich weil Button02 noch nicht inialisiert
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
}
//=============================================================================================================================================================
class MyButton02 extends JButton implements ActionListener{
MyButton01 mb_01;
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
public MyButton02(MyButton01 mb01){
super("Button 02");
setBounds(170,10,150,50);
addActionListener(this);
mb_01 = mb01;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
public void actionPerformed(ActionEvent e){
System.out.println("Button02 gedrückt - getText vom Button01: " + mb_01.getText());
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
}
Gruss Max