gpt4 book ai didi

java - 如何在 JButton 单击时关闭 JInternalFrame 并显示另一个 JInternalFrame?

转载 作者:行者123 更新时间:2023-12-01 17:17:51 27 4
gpt4 key购买 nike

例如:

JButton1点击JInternalFrame1时在JDesktopPane上显示当JButton2点击JInternalFrame1关闭时,JInternalFrame2JDesktopPane上显示。

谢谢之前

编辑:使用评论中的代码

if (JInternalFrame1 == null) { 
JInternalFrame1 = new FJInternalFrame();
Desktop.add(JInternalFrame1);
JInternalFrame1.toFront();
} else {
JInternalFrame1.dispose();
}

最佳答案

看一下这个例子。我创建了一个自定义 JInternalFrame,每次创建新框架时它都有不同的标题。当您单击该按钮时,会创建一个新按钮,而旧按钮会消失

这是可能对您有所帮助的重要代码。如果桌面大小等于 0,我会添加一个新框架,否则我会删除前一个框架,添加一个新框架,然后重新验证

   button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (desktop.getAllFrames().length == 0) {
desktop.add(new MyInternalFrame());

} else {
desktop.remove(0);
desktop.add(new MyInternalFrame());
revalidate();
repaint();
}
}
});
<小时/>

这是完整的代码。这是两个不同的文件。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class InternalFrameDemo1 extends JPanel {

JDesktopPane desktop;
JButton button;

public InternalFrameDemo1() {
desktop = new JDesktopPane();
button = new JButton("Get Next Frame");

setLayout(new BorderLayout());
add(desktop, BorderLayout.CENTER);
add(button, BorderLayout.SOUTH);

button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (desktop.getAllFrames().length == 0) {
desktop.add(new MyInternalFrame());

} else {
desktop.remove(0);
desktop.add(new MyInternalFrame());
revalidate();
repaint();
}
}
});
}

public static void createAndShowGui() {
JFrame frame = new JFrame();
frame.add(new InternalFrameDemo1());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);

}

public Dimension getPreferredSize() {
return new Dimension(500, 500);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}

import javax.swing.JInternalFrame;

public class MyInternalFrame extends JInternalFrame {
static int openFrameCount = 0;
static final int xOffset = 30, yOffset = 30;

public MyInternalFrame() {
super("Document #" + (++openFrameCount),
true, //resizable
true, //closable
true, //maximizable
true);//iconifiable

setSize(300,300);
setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
setVisible(true);
}
}

enter image description here

关于java - 如何在 JButton 单击时关闭 JInternalFrame 并显示另一个 JInternalFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20774628/

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