Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java--JDialog不可移动_Java_Swing_Jdialog - Fatal编程技术网

Java--JDialog不可移动

Java--JDialog不可移动,java,swing,jdialog,Java,Swing,Jdialog,什么代码有助于使JDialog不可移动?我考虑了两种选择: 设置未装饰(true)可以工作,但会删除所有修剪 addComponentListener并重写componentMoved()方法,这会导致JDialog随后在移动时调用InquiredicSeizure() 有什么想法吗?我的第一反应是——除非你使用setUndecorated(真的)。。。你可以手动在那里放一些装饰物,但是,好吧,呃 因此,如果你想要原生的修剪,并且你想要它不可移动,而不会因为使用组件侦听器而出现可怕的闪烁,我认为

什么代码有助于使
JDialog
不可移动?我考虑了两种选择:

  • 设置未装饰(true)可以工作,但会删除所有修剪
  • addComponentListener
    并重写
    componentMoved()
    方法,这会导致
    JDialog
    随后在移动时调用
    InquiredicSeizure()

    有什么想法吗?

    我的第一反应是——除非你使用setUndecorated(真的)。。。你可以手动在那里放一些装饰物,但是,好吧,呃

    因此,如果你想要原生的修剪,并且你想要它不可移动,而不会因为使用组件侦听器而出现可怕的闪烁,我认为你不能

    您可以手动创建一个看起来像默认边框的边框……下面是一个如何创建的示例,尽管我故意让边框看起来像您一整天看到的最丑的东西。您需要找到BorderFactory调用的正确组合,以实现您想要做的事情

    public static void main(String[] args) throws InterruptedException {
        JDialog frame = new JDialog((Frame) null, "MC Immovable");
        frame.setUndecorated(true);
        JPanel panel = new JPanel();
        panel.setBorder(BorderFactory.createEtchedBorder(Color.GREEN, Color.RED));
        panel.add(new JLabel("You can't move this"));
    
        frame.setContentPane(panel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }
    

    我不使用setUnderatted(true)的原因是希望保留默认边框。窗户是无边界的吗?谢谢你,伙计。你能解释一下你为什么要这么做吗?它可能会提供一种可行的方法。