- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有这两个 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);
}
});
}
}
最佳答案
JFrame默认情况下永远不会对 AlwaysOnTop 或 toFront 做出正确 react ,这不是主要的主要功能 Top-Level Containe r(没有iconify和deiconify,但是在屏幕上闪烁)
你必须使用 JDialog对于这份工作,set for parent和 modality (if needed)
关于java - setUndecorated(true) 与 toFront() 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616405/
我想创建一个 StackPane ,无论添加什么,我选择的节点总是在前面(而不是必须注意我添加东西的顺序,或者记住每当添加任何内容时调用该特定节点上的 toFront()。) 为了做到这一点,我只是在
我只是尝试使用 raphael.js 来生成交互式 svg map ,我想要实现的效果有点像这个印度 map 示例,我从 wikimedia 下载,JS fiddle working example
我的问题是这样的。我得到了两个可以一起工作、一起移动的窗口。 但是,如果我然后打开浏览器或其他会出现在屏幕前面的东西,然后我尝试通过在任务栏上单击它来在前面显示我的程序,那么只有一个窗口出现在前面。对
我有以下布局。 我想要实现的是将黄色 subview 设为圆形并将其置于最前面。我尝试了 self.view.bringSubview(toFront:yellowView) 但似乎没有像我预期的那样
我有一个包含 7 个系列的散点图,每个系列大约有 2100 个点。我通过选择它们来突出显示点(因为显然没有办法以编程方式在一个点上添加一对静态十字准线),但问题是,有时它们完全出现在另一个系列后面,因
我有这两个 JFrame,当 setUndecorated 设置为 false 时,它们工作得很好,但当它设置为 true 时,它不能始终如一地工作; frame = new JFrame("
我有一个散点图,我循环遍历每个点,如果符合我的条件,则将其放在前面,如下所示: ptChart.series[0].points.forEach((point) => { if (point.op
在拉斐尔,如果你申请.toFront()或.toBack()对于一个集合,它做了两件事: 预期行为:该集合中的所有元素都位于堆叠顺序的前面或后面。 意外行为:集合内元素的顺序发生变化 JSBin de
本文整理了Java中com.badlogic.gdx.scenes.scene2d.ui.Window.toFront()方法的一些代码示例,展示了Window.toFront()的具体用法。这些代码
我是一名优秀的程序员,十分优秀!