別のクラスで宣言されている既に宣言されているインスタンスからメソッドを取得する方法についてのアイデアは何ですか?
クラスを育てる
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 のメソッドを取得する方法がわかりません。そのアイデアは可能ですか?これまでのところ、セッター/ゲッター、シングルトン パターンなど、役立つトピックをいくつか紹介してきましたが、これまでのところ、そのアイデアはとらえどころのないものでした。