Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 重新调整保留在父JFrame中的JInternalFrame的大小,并且此父JFrame已向ComponentMover API注册_Java_Swing_Jinternalframe - Fatal编程技术网

Java 重新调整保留在父JFrame中的JInternalFrame的大小,并且此父JFrame已向ComponentMover API注册

Java 重新调整保留在父JFrame中的JInternalFrame的大小,并且此父JFrame已向ComponentMover API注册,java,swing,jinternalframe,Java,Swing,Jinternalframe,我的英语很差,所以请原谅我的语法错误。我是java swings新手,我的目的是动态创建许多jintenalframe,每个jintenalframe都是可移动的,即可以自由拖动并放在任何地方,这是我通过component mover类实现的。现在我面临的问题是,我无法调整这些帧的大小。每当我调整这些JinternalFrame的尺寸时,它们都会恢复到相同的大小。 我甚至在组件侦听器中注册了调整大小事件,代码如下: this.addComponentListener(new ComponentA

我的英语很差,所以请原谅我的语法错误。我是java swings新手,我的目的是动态创建许多jintenalframe,每个jintenalframe都是可移动的,即可以自由拖动并放在任何地方,这是我通过component mover类实现的。现在我面临的问题是,我无法调整这些帧的大小。每当我调整这些JinternalFrame的尺寸时,它们都会恢复到相同的大小。 我甚至在组件侦听器中注册了调整大小事件,代码如下:

this.addComponentListener(new ComponentAdapter() {
    public void componentResized(ComponentEvent ce)
    {
      setDinamicSize(ce)
    }
}); 

private void setDinamicSize(ComponentEvent ce)
{
    JInternalFrame tempFrame = (JInternalFrame)ce.getSource();
    tempFrame.setSize(new Dimension(tempFrame.getAlignmentX(),tempFrame.getAlignmenty()));
}

请帮帮我。提前感谢

JDesktopPane
是一个用于
JInternalFrame
s的容器,它负责定位和(如果您正确构建了内部框架)调整大小

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestDesktopPane {

    public static void main(String[] args) {
        new TestDesktopPane();
    }

    public TestDesktopPane() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JDesktopPane pane = new JDesktopPane();
                JInternalFrame inFrame = new JInternalFrame("No Hands", true, true, true, true);
                inFrame.setBounds(10, 10, 100, 100);
                inFrame.setVisible(true);
                pane.add(inFrame);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(pane);
                frame.setSize(400, 400);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}


查看更多详细信息

JDesktopPane
是一个用于
JInternalFrame
s的容器,它负责定位和(如果正确构建了内部框架)调整大小

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestDesktopPane {

    public static void main(String[] args) {
        new TestDesktopPane();
    }

    public TestDesktopPane() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JDesktopPane pane = new JDesktopPane();
                JInternalFrame inFrame = new JInternalFrame("No Hands", true, true, true, true);
                inFrame.setBounds(10, 10, 100, 100);
                inFrame.setVisible(true);
                pane.add(inFrame);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(pane);
                frame.setSize(400, 400);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}


查看更多详细信息

为什么不直接使用
JDesktopPane
?如果创建正确,
JInternalFrame
应该是可移动和可调整大小的,而不需要任何额外的代码……实际上,内部帧将保留在一个帧内。因为每个jinternalframe都代表一个游戏室,但是您要将
jinternalframe
s添加到什么?它们应该与一个
JDesktopPane
一起使用……所有这些?到单个
JFrame
?或者每一个都是它自己的
JFrame
?@MadProgrammer所有的都是一个父JFrame为什么不直接使用
JDesktopPane
?如果创建正确,
JInternalFrame
应该是可移动和可调整大小的,而不需要任何额外的代码……实际上,内部帧将保留在一个帧内。因为每个jinternalframe都代表一个游戏室,但是您要将
jinternalframe
s添加到什么?它们应该与一个
JDesktopPane
一起使用……所有这些?到单个
JFrame
?或者每个人都有自己的
JFrame
?@MadProgrammer所有人都有一个单亲JFrame(高兴地拍手),现在让它顺时针运行@疯狂的程序员向你致敬:):(高兴地拍手)现在让它顺时针走@疯狂的程序员向你致敬:):)