First off Aufruf dies ist ein recht einfaches Problem, aber ich kann nicht scheinen, nur um es zu bekommen, ok so ist hier eine allgemeine Übersicht über mein ProgrammKlassenhierarchie Methoden, wenn sie von anderen Klassen
|class A |
|new B();|
|new C();|
/ \
/ \
|Class B | |Class C |
|new D();| |method E(){}|
|
|Class D |
|Invokes method E|
Dies ist meine Programmhierarchie und ich möchte die nicht statische Methode E aus der Klasse D aufrufen, ohne eine neue Instanz der Klasse C zu erstellen, gibt es eine Möglichkeit dies zu tun oder muss ich meine Klassenhierarchie neu strukturieren.
** EDIT: ** Hier ist wirklich Code mein Problem angezeigt werden (ohne Klasse B obwohl):
import javax.swing.JFrame;
import javax.swing.JSplitPane;
public class TheFrame extends JFrame{
public TheFrame(){
setTitle("Suduku Solver");
add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
new TextLabel(), new ChangeButton()));
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(300,300);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
new TheFrame();
}
}
import javax.swing.JLabel;
public class TextLabel extends JLabel{
public TextLabel(){
setText("This is the Label");
}
public void ChangeLabel(){
setText("Changed Label");
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class ChangeButton extends JButton {
public ChangeButton(){
setText("Click to change Label");
addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
//Invoke TextLabel changeText method here
}
});
}
}
ich möchte die changeText Methode aufzurufen, indem Sie die Taste
Ihr Ascii-Diagramm ist unklar. Könnten Sie stattdessen tatsächlichen Code posten? – Bohemian
Sie könnten die Instanz der 'C' Klasse von' A' nach 'B' Klasse übergeben. Übergeben Sie dann diese Instanz an die Klasse "D" und rufen Sie die "Methode E" in der Klasse "D" auf, ohne die Instanz in der Klasse "D" erstellen zu müssen. – alayor