我目前的问题是我有一个JFrame(上面有一些按钮)...当我单击“新建”按钮时,它将在屏幕上调用一个InternalFrame ...内部框架屏幕出来了,一切都很好直到我移动内部框架,发现它位于所有部件的背面...
我已经尝试过.toFront(),.setAlwaysOnTop()以及其他所有方法...直到遇到JLayeredPane为止,我认为这是我正在寻找的东西...但是我无法使其正常工作>
请务必告诉您所有您需要的额外信息。将尽快为您提供
WindowConstruct wconstruct;
JDesktopPane desktop = new JDesktopPane();
JInternalFrame InternalWindows = new JInternalFrame();
public MainUser(){
wconstruct = new WindowConstruct("..:: User's Helpdesk Main Page ::..", 1500, 800, false, null, "user");
wconstruct.add(desktop);
wconstruct.btnNew.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src == wconstruct.btnNew){
InternalWindows.setSize(500, 300);
InternalWindows.setTitle("New task");
InternalWindows.setLayout(null);
InternalWindows.setLocation(100,50);
InternalWindows.setClosable(true);
desktop.add(InternalWindows);
InternalWindows.setVisible(true);
}
}
最佳答案
我似乎没有任何异常,尝试使用您显示的代码创建MCVE。这不是最好的代码,但是我试图尽可能地保持代码的外观。查看一下,让我知道我的代码有何不同。同样,为了更好地帮助我们深入了解问题的根源,您应该始终发布MCVE。这意味着代码应该是可运行的,即复制,粘贴,编译,运行。
另外,如果您不打算使该应用程序成为MDI(请参见注释中的链接)类型的应用程序,请考虑我上面的所有注释(即,可能使用JDialog)。
import java.awt.BorderLayout;
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.JInternalFrame;
import javax.swing.SwingUtilities;
public class MainUser implements ActionListener {
WindowConstruct wconstruct;
JDesktopPane desktop = new JDesktopPane();
JInternalFrame InternalWindows = new JInternalFrame();
public MainUser() {
wconstruct = new WindowConstruct("..:: User's Helpdesk Main Page ::..",
500, 500);
wconstruct.add(desktop);
wconstruct.btnNew.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if (src == wconstruct.btnNew) {
InternalWindows.setSize(500, 300);
InternalWindows.setTitle("New task");
InternalWindows.setLayout(null);
InternalWindows.setClosable(true);
InternalWindows.setLocation(100, 50);
desktop.add(InternalWindows);
InternalWindows.setVisible(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MainUser();
}
});
}
class WindowConstruct extends JFrame {
JButton btnNew = new JButton("Add New");
public WindowConstruct(String title, int width, int height) {
super(title);
setSize(width, height);
add(btnNew, BorderLayout.PAGE_END);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
}