我的问题是,我有3个不同的JFrame(我不能将3个整合在一起,因为所有JFrame都包含ImageIcons和Mouslisteners)。当我打开程序时,它们正好是我想要的位置,但是当我在后台单击JFrame时,它将出现在前景中,而其他的将移至后台。
我知道我可以设置一个JFrame.alwaysOnTop(true),但是当我将一个设置在顶部时,另一个将移至后台。
因此,我需要类似命令的内容,可以在其中将一个JFrame设置为Background,将一个JFrame设置为Foreground,将一个JFrame设置为两者之间的某个东西,并且不应通过单击来切换它。有人可以帮我吗?
ImageIcon img1 = new ImageIcon(getClass().getResource("/image/x.png"));
ImageIcon img2 = new ImageIcon(getClass().getResource("/image/y.png"));
ImageIcon img3 = new ImageIcon(getClass().getResource("/image/z.png"));
JFrame frame1 = new JFrame();
JFrame frame2 = new JFrame();
JFrame frame3 = new JFrame();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
label1.setIcon(img1);
label2.setIcon(img2);
label3.setIcon(img3);
JPanel panel1 = new JPanel();
JPanel panel1 = new JPanel();
JPanel panel1 = new JPanel();
panel1.add(label1);
panel2.add(label2);
panel3.add(label3);
frame1.setContentPane(panel1);
frame2.setContentPane(panel2);
frame3.setContentPane(panel3);
panel1.setBorder(null);
panel2.setBorder(null);
panel3.setBorder(null);
frame1.setVisible(true);
frame2.setVisible(true);
frame3.setVisible(true);
期望结果是全屏背景jframe,中间有一个大的jframe,在中间JFrame的顶部还有另一个JFrame。而且我不希望JFrame更改其位置。
谢谢!
答案 0 :(得分:0)
单击背景JFrame之后,它将自动聚焦被单击的JFrame,因为此自动聚焦是操作系统的功能。如果要使用描述了三个嵌套视图的框架,则可以在容器JPanel
中使用JPanel
,在JPanel
中使用JFrame
,以得到相同的外观:>
伪代码如下:
JPanel innerPanel = new JPanel();
innerPanel.setWidth(100)
innerPanel.setHeight(100);
JPanel containerPanel= new JPanel();
containerPanel.setWidth(200)
containerPanel.setHeight(200);
JFrame mainFrame = new JFrame();
mainFrame.setWidth(400)
mainFrame.setHeight(400);
innerPanel.add(containerPanel);
mainFrame.getContentPane().add(containerPanel);
mainFrame.setVisible(true);
答案 1 :(得分:0)
您必须将JFrames的“ FocusableWindowState”设置为false。
frame1.setFocusableWindowState(false);
frame2.setFocusableWindowState(false);
frame3.setFocusableWindowState(false);
要将一个背景放置在另一个背景上,只需将它们设置为按特定顺序可见即可。
frame1.setFocusableWindowState(false);
frame2.setFocusableWindowState(false);
frame3.setFocusableWindowState(false);
就像第一个JFrame在后台,第二个在中间,最后一个在前景。
ImageIcon img1 = new ImageIcon(getClass().getResource("/image/x.png"));
ImageIcon img2 = new ImageIcon(getClass().getResource("/image/y.png"));
ImageIcon img3 = new ImageIcon(getClass().getResource("/image/z.png"));
JFrame frame1 = new JFrame();
JFrame frame2 = new JFrame();
JFrame frame3 = new JFrame();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
label1.setIcon(img1);
label2.setIcon(img2);
label3.setIcon(img3);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
panel1.add(label1);
panel2.add(label2);
panel3.add(label3);
frame1.setContentPane(panel1);
frame2.setContentPane(panel2);
frame3.setContentPane(panel3);
panel1.setBorder(null);
panel2.setBorder(null);
panel3.setBorder(null);
frame1.setFocusableWindowState(false);
frame2.setFocusableWindowState(false);
frame3.setFocusableWindowState(false);
frame1.setVisible(true);
frame2.setVisible(true);
frame3.setVisible(true);
希望我能为您提供帮助!