gpt4 book ai didi

java - setUndecorated(true) 与 toFront() 混淆

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:45 25 4
gpt4 key购买 nike

我有这两个 JFrame,当 setUndecorated 设置为 false 时,它​​们工作得很好,但当它设置为 true 时,它​​不能始终如一地工作;

frame = new JFrame("Name of the frame"); // main frame
frame.setAlwaysOnTop(false);
frame.setSize(width, height);
frame.add(canvas);
frame.setUndecorated(true);
frame.setVisible(true);

menu = new MenuUI(); // this is also a undecorated JFrame

菜单由鼠标事件调用,但在主框架中时而出现在前面,时而出现在后面...

public static void checkMove(int action, MouseEvent e) {
int x = e.getX();
if(x == 0){
menu.setVisible(true);
menu.toFront();
}else{
menu.setVisible(false);
}

我已经尝试执行 frame.toBack(); 但它也会在其他所有内容之后发送框架...如何将未修饰的 JFrame 放在另一个未修饰的 JFrame 前面并使其保持一致?

编辑:鼠标事件时菜单框消失

contentPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
setVisible(false);
}
});

EDIT2:在 mKorbel 的回答之后,我尝试创建一个 JDialog,但我得到的结果与 JFrame 相同。如果我扩展 JDialog,如何设置父级?

package menu;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JDialog;

import openGL.main.openGLMain;

@SuppressWarnings("serial")
public class menuTest extends JDialog {

public menuTest() {
setUndecorated(true);
setBounds(0, 0, 250, frame.getHeight());
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGap(0, 450, Short.MAX_VALUE)
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGap(0, 700, Short.MAX_VALUE)
);
getContentPane().setLayout(groupLayout);
getContentPane().addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
setVisible(false);
}
});
}
}

最佳答案

关于java - setUndecorated(true) 与 toFront() 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616405/

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