关于如何从另一个类上声明的已声明实例中获取方法的想法是什么?
成长课堂
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 );
}
}
按钮面板类
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");
}
}
}
生长面板类
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 的方法。这个想法甚至可能吗?到目前为止,我已经获得了一些可能会有所帮助的主题:Setters / getters、Singleton Pattern...但到目前为止,这个想法一直难以捉摸。