我想在jFrame中的桌面窗格上显示jInternalFrame1.jInternalFrame1包含一个Button,用于通过删除jInternalFrame1在桌面窗格上显示jInternalFrame2。
public class main扩展了javax.swing.JFrame {
a aa=new a();//jInternalFrame1
public main() {
initComponents();
jDesktopPane1.add(aa);
aa.setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new main().setVisible(true);
}
});
}
private javax.swing.JDesktopPane jDesktopPane1; }
jInternalFrame1中按钮下的代码;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
b bb=new b();//jInternalFrame2
this.dispose();
bb.setVisible(true);
}
但是这段代码没有显示jInternalFrame2.我已经看到了很多这方面的解决方案。但是我不明白如何将这些添加到桌面pane.sorry中,因为我的英语不好。 谢谢
答案 0 :(得分:1)
您忘记将bb
添加到jDesktpPane1
。为此,您需要在JDesktopPane
中将jInternalFrame1
参数作为参数。然后使用JDesktopPane
添加第二个。我整理了一个简单的试运行。
来自MainFrame
的代码
private void jMenuItem1ActionPerformed(ActionEvent evt) {
IFrameOne iFrame1 = new IFrameOne(jDesktopPane1);
jDesktopPane1.add(iFrame1);
iFrame1.setVisible(true);
}
来自IFrmaeOne
的代码
JDesktopPane desktop;
public IFrameOne(JDesktopPane desktop) {
initComponents();
this.desktop = desktop;
}
...
private void jButton1ActionPerformed(ActionEvent evt) {
IFrameTwo iFrameTwo = new IFrameTwo();
desktop.add(iFrameTwo);
this.dispose();
iFrameTwo.setVisible(true);
}
IFrameTwo
只是一个空的JInternalFrame
类。这适合我。也可以使用GUI Builder创建
“先生,我实际上尝试过cardLayout。但我不能使用导航器添加卡片(从调色板添加)。对我来说编码很难。所以我使用了拖放。可以告诉你为什么不能添加卡片?昨天我补充说。但今天不能“
如果您想CardLayout
使用JInternalFrame
,请执行以下步骤
您可以创建JPanel forms
。所以创建其中两个。
在JInternalFrame
拖放JPanel
并将其扩展到相框大小。
您需要自己手动编码CardLayout
。但它在构造函数
public MyInternalFrame() {
initComponents();
CardLayout cardlayout = new CardLayout();
jPanel1.setLayout(cardLayout);
}
然后添加您在第一步中创建的两个JPanel
表单。
jPanel1.add(new PanelForm1(), "panel1");
jPanel1.add(new PanelForm2(), "panel2");
然后在actionPerformed
中,您可以在面板之间切换
public void jButton1ActionPerformed(java.awt.events.ActionEvent e) {
cardLayout.show(jPanel1, "panel2");
}
如果需要,您可以来回切换。