应用程序有个Main,main中new一个MyFrame(继承JFrame),现在有个MyPanel类(JPanel),他会被MyFrame主窗口类中调用,即在MyFrame类中点击,会弹出MyPanel类,MyPanel类中响应鼠标事件,需要把鼠标坐标值反应到MyFrame类的状态栏,status为MyFrame的私有成员,但是,MyPanel类和MyFrame类存放在不同的两个package中,因此MyPanel类无法获得MyFrame类的status对象(JLabel)
在C++中,常用的做法是,把MyFrame类作为App的成员,然后通过GetApp()->GetMainFrame()的方式,从而获得status成员不知道java里该怎么办?
在C++中,常用的做法是,把MyFrame类作为App的成员,然后通过GetApp()->GetMainFrame()的方式,从而获得status成员不知道java里该怎么办?
怎么把MyFrame类作为参数传给MyPanel?
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;/**
* 演示 MyPanel 如何操作 MyFrame
*/
public class AccessFrameFromPanel { public static void main(String[] args) {
MyFrame frame = new MyFrame();
frame.setSize(300, 150);
frame.setVisible(true);
}
}class MyFrame extends JFrame { MyFrame() throws HeadlessException {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initControls();
} private void initControls() {
this.add(new MyPanel(this), BorderLayout.CENTER);
}
}class MyPanel extends JPanel { MyPanel(final MyFrame frame) {
this.addMouseListener(new MouseAdapter() { @Override
public void mouseClicked(MouseEvent e) {
frame.setTitle(e.getX() + ": " + e.getY());
}
});
}
}