如何从已声明的另一个类的已声明实例中获取方法的想法是什么?在不声明新实例的情况下获取方法
成长类
public class Grow {
public static void main(String [] args) {
JFrame frame = new JFrame();
final GrowPanel growPanel = new GrowPanel();
ButtonPanel btnPanel = new ButtonPanel();
frame.add(growPanel);
frame.add(btnPanel, BorderLayout.SOUTH);
frame.setSize(400, 300);
frame.setVisible(true);
}
}
ButtonPanel类
public class ButtonPanel extends JPanel implements ActionListener{
JButton btn;
public ButtonPanel() {
btn = new JButton("Pause");
add(btn);
btn.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Pause")){
System.out.println("RESUME");
//growPanel.pause();
btn.setText("Resume");
} else {
System.out.println("PAUSE");
// growPanel.start();
btn.setText("Pause");
}
}
}
GrowPanel类
class GrowPanel extends JComponent {
private int x;
private int y;
private Timer timer;
ButtonPanel b;
public GrowPanel() {
x = 10;
y = 10;
startPaiting();
}
public void startPaiting() {
timer = new Timer();
timer.schedule(new TimerTask(){
public void run(){
changeState();
repaint();
}
},0, 100);
}
public void pause(){
timer.cancel();
startPaiting();
}
public void start(){
timer.cancel();
x = 10;
y = 10;
startPaiting();
}
public void paintComponent(Graphics g){
g.fillOval(x, y, 10, 10);
}
private void changeState(){
x+=10;
if(x >= 400) {
y+=10;
x = 0;
}
if(y >= 300){
y = 10;
}
}
}
我已经在Grow中声明了一个GrowPanel的新实例。我只是不知道如何从ButtonPanel获取GrowPanel的方法,而无需在ButtonPanel中声明一个新的GrowPanel实例。这个想法甚至可能吗?到目前为止,我已经给出了一些可能有用的主题:Setter/getters,Singleton Pattern ......但迄今为止,这个想法一直难以捉摸。
您是否尝试了反射? –