Java make JFrame“;原地不动”;

Java make JFrame“;原地不动”;,java,jframe,Java,Jframe,有没有一种方法可以使Java应用程序的框架保持在我使用.setLocation使其显示的位置?我想禁用用户在屏幕上移动JFrame的功能。不能“禁止”移动JFrame。它是系统GUI的一部分;您所能做的最好的事情就是将ComponentListener添加到JFrame中,并在移动时将其放回原始位置 我认为这样做的视觉效果非常有趣。你可以创建一个守护进程线程来检查帧是否移动,如果是,它会将帧放回原来的位置?这有点像黑客,但你可以使它全屏显示。无法移动全屏应用程序。以下是防止移动JFrame的方法

有没有一种方法可以使Java应用程序的框架保持在我使用.setLocation使其显示的位置?我想禁用用户在屏幕上移动JFrame的功能。

不能“禁止”移动JFrame。它是系统GUI的一部分;您所能做的最好的事情就是将ComponentListener添加到JFrame中,并在移动时将其放回原始位置


我认为这样做的视觉效果非常有趣。

你可以创建一个守护进程线程来检查帧是否移动,如果是,它会将帧放回原来的位置?

这有点像黑客,但你可以使它全屏显示。无法移动全屏应用程序。

以下是防止移动JFrame的方法。在生产应用程序中使用它不是一个好主意,因为当用户尝试最小化/最大帧时,它会激怒用户并导致其他错误

public static void main(String args[]) throws Exception {
class JFrameTypeLocking extends JFrame {
    Point locked=null;
    public JFrameTypeLocking(String string) {
        super(string);
        super.addComponentListener(new ComponentAdapter(){
            public void componentMoved(ComponentEvent e) {
                if (locked!=null) JFrameTypeLocking.this.setLocation(locked);
            }});
    }
    public void lockLocation() {
        locked=super.getLocation();
    }
}
JFrameTypeLocking f = new JFrameTypeLocking("");
f.setSize(300,300);
f.setLocation(300,300);
f.setVisible(true);
f.lockLocation();
}

-1.不正确,可以隐藏标题栏。拖动窗口需要一个标题栏,因此无法移动窗口。@Jon不正确。在Windows屏幕底部的应用程序栏上单击鼠标右键。选择移动。对于Win7,将鼠标悬停在应用程序上,然后右键单击所需窗口的缩略图;我不希望这个框架这么大。我希望它有一个自定义的大小和一个自定义的位置。+1这是唯一的解决方案,实际上完成了任务。虽然有点恶心,但它能工作。我试过使用componentListener,但当我尝试移动它时,它会闪烁,真的很烦人。谷歌搜索显示,这确实是唯一可行的跨平台解决方案。当然,你可以试着搞乱窗口管理器。只是出于好奇,如果移动窗口,为什么会出现这样的问题?我是用户,这是我的电脑,windows去我想让他们去的地方。句号。可以作为一种技巧,通过使用与父对象一起移动的对话框使组件掉下阴影,并使其不易损坏,但在“最小/最大”操作期间会出现问题。如果您能够以某种方式完全阻止“最小/最大”(不确定是否可以做到),并保证z顺序,则会产生阴影效果。但如果您尝试,请使用半透明窗口而不是对话框。