gpt4 book ai didi

call - 有什么方法可以从 JinternalFrame 调用其他 JinternalFrame,但是在主 Jframe 的 desktopPane 中。

转载 作者:行者123 更新时间:2023-12-04 05:05:16 29 4
gpt4 key购买 nike

下面的“代码部分 1”用于在 MDI 应用程序中从 menuItem 调用 UcakListesi(JinternalFrame) 没有问题。

我想使用相同的代码从另一个 JinternalFrame 调用相同的 UcakListesi(JinternalFrame) 但是,我收到有关“desktopPane.add(nw);”的错误行见代码第 2 部分。无法访问主 jframe desktopPane 表单 JinternalFrame ..

有什么方法可以从 JinternalFrame 调用其他 JinternalFrame,但是在主 Jframe 的 desktopPane 中。

对不起我糟糕的英语。

问候和谢谢。

---code part 1---
private void UckListeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
//Uçak listesi penceresi çağrılıyor
UcakListesi nw = UcakListesi.getInstance();
nw.pack();
if (nw.isVisible()) {
} else {
desktopPane.add(nw);
nw.setVisible(true);
}
try {
//açılan internal frame'in max size ile açılması için
nw.setMaximum(true);
} catch (PropertyVetoException ex) {
Logger.getLogger(AnaUygulama.class.getName()).log(Level.SEVERE, null, ex);
}
}
---code part 2---
class PopUpx extends JPopupMenu {
JMenuItem anItem1;
JMenuItem anItem2;
JMenuItem anItem3;
JMenuItem anItem4;
JMenuItem anItem5;
JSeparator anSeparator1;
JSeparator anSeparator2;
JSeparator anSeparator3;
JSeparator anSeparator4;
JMenu yeni;
ActionListener anListener2;



public PopUpx(final String x){
anItem1 = new JMenuItem(x+ " numaralı Uçak için");
anItem2 = new JMenuItem("Detay Bilgiler");
anItem3 = new JMenuItem("Arıza İş Emri Aç");
anItem4 = new JMenuItem("Uçuş Öncesi Servis");
anItem5 = new JMenuItem("Uçuş Sonrası Servis");
anSeparator1 = new JSeparator();
anSeparator2 = new JSeparator();
anSeparator3 = new JSeparator();
anSeparator4 = new JSeparator();
yeni = new JMenu ("Servis İşlemleri");


add(anItem1);
anItem1.setEnabled(false);
add(anSeparator1);
add(anItem2);
anItem2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent event) {
System.out.println(x+" nolu uçağın "+anItem2.getText()+" basıldı");

UcakListesi nw = UcakListesi.getInstance();
nw.pack();

if (nw.isVisible()) {
} else {

//problem is here
desktopPane.add(nw);
nw.setVisible(true);
}
try {
//açılan internal frame'in max size ile açılması için
nw.setMaximum(true);
} catch (PropertyVetoException ex) {
Logger.getLogger(AnaUygulama.class.getName()).log(Level.SEVERE, null, ex);
}

}

});



anItem2.setToolTipText(x+ " numaralı Uçağın Detay Bilgilerine ulaşılır...");


add(anSeparator2);
add(anItem3);
add(anSeparator3);
yeni.add(anItem4);
add(anSeparator4);
add(yeni);
yeni.add(anItem4);
yeni.add(anSeparator4);
yeni.add(anItem5);

}}

最佳答案

我找到了解决方案。

对于第一个类(MainApplication),您的 Jframe 和 JDesktopPane 在下面放置代码

public javax.swing.JDesktopPane getDesktopPane() {
return desktopPane;
}

然后在任何这样的 JinternalFrame 类文件中使用来调用另一个(YourJinternalFrame)
 YourJinternalFrame  nw = YourJinternalFrame.getInstance();
nw.pack();
if (nw.isVisible()) {
} else {
getDesktopPane().add(nw);
nw.setVisible(true);
}
try {
nw.setMaximum(true);
} catch (PropertyVetoException ex) {
Logger.getLogger(MainApplication.class.getName()).log(Level.SEVERE, null, ex);
}

只获得一个名为 JinternalFrame 的实例
将此代码放在名为 JinternalFrame(YourJinternalFrame) 的下面
private static YourJinternalFrame myInstance;

public static YourJinternalFrame getInstance() {
if (myInstance == null) {
myInstance = new YourJinternalFrame();
}
return myInstance;

谢谢我:)

关于call - 有什么方法可以从 JinternalFrame 调用其他 JinternalFrame,但是在主 Jframe 的 desktopPane 中。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598909/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com