我在这个主框架中打开一个新的内部框架,我有2个类,
DisplayInternalFrame aDisplay = new DisplayInternalFrame(name, surname);
desktop.add(aDisplay);
aDisplay.setMaximum(true);
aDisplay.show()
我有一个桌面窗格及其名称桌面,这是我的主框架,内部框架在应用程序运行时加载,
现在我的第二个类是internalframe,它有一个表,我想在人们推送一个表项时打开新的内部框架,我的表名是errorTable
private void errorTableMouseClicked(java.awt.event.MouseEvent evt) {
errorInternalFrame acceptFrame = new errorInternalFrame();
desktop.add(acceptFrame);
桌面是在1级,所以我无法访问桌面,因为我现在正在使用内部框架事件,
基本上当人们在内部框架上推动桌面上的项目时,打开一个新的内部框架,或类似的东西。
答案 0 :(得分:0)
“桌面在1级,所以我无法访问桌面,因为我现在正在使用内部框架事件,”
您可以使用interface
addToDesktop
public interface AddableDesktop {
public void addToDesktop();
}
然后在您的桌面课程中实施
public class Main extends JFrame implements AddableDesktop {
private JDesktopPane desktop;
@Override
public void addToDesktop() {
errorInternalFrame acceptFrame = new errorInternalFrame();
desktop.add(acceptFrame);
acceptFrame.setVisible(true);
}
}
您还需要将Main
实例(AddableDesktop
的实例)传递给DisplayInternalFrame
。然后,您可以调用addToDesktop
方法。
public class DisplayInternalFrame extends JInternalFrame {
private AddableDesktop addableDesktop;
public DisplayInternalFrame(String name, String surname, AddableDesktop ad) {
this.addableDesktop = ad;
}
...
private void errorTableMouseClicked(java.awt.event.MouseEvent evt) {
addableDesktop.addToDesktop();
}
}
在DisplayInternalFrame
课程中创建Main
时,您会将Main
实例传递给构造函数
DisplayInternalFrame aDisplay =
new DisplayInternalFrame(name, surname, Main.this);
这可能不是您正在寻找的确切设置,但它显示了您如何提供从一个类到另一个类的功能。