【发布时间】:2017-01-14 01:28:03
【问题描述】:
首先这是一个非常基本的问题,但我似乎无法理解, 好的,这是我的程序的一般概述
|class A |
|new B();|
|new C();|
/ \
/ \
|Class B | |Class C |
|new D();| |method E(){}|
|
|Class D |
|Invokes method E|
这是我的程序层次结构,我想从 D 类调用非静态方法 E,而不创建 C 类的新实例,有没有办法做到这一点,或者我是否必须重组我的类层次结构。
**编辑:**这是显示我的问题的真实代码(虽然没有 B 类):
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
}
});
}
}
我想通过点击按钮调用 changeText 方法
【问题讨论】:
-
你的ascii图不清楚。您可以发布实际代码吗?
-
您可以将
C类的实例从A传递给B类。然后,将此实例传递给D类并在D类中调用method E,而无需在D类中创建实例。