Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 使用JPanels的可缩放维度?_Java_Swing - Fatal编程技术网

Java 使用JPanels的可缩放维度?

Java 使用JPanels的可缩放维度?,java,swing,Java,Swing,因此,我开始了自己的小项目,主要是使用JPanel组件构建一个简单的文本编辑器。目前,我已将我的尺码设置为: tfMain.setPreferredSize(new Dimension(550,650)); 它可以工作,但不能很好地扩展。如果我调整JFrame的大小,我的所有组件都会四处移动,试图适应。我的tfMain保持不变,因为我已将其设置为550x650。因此,要明确的是;启动程序时,我的tfMain应为550x650。如果我把窗户变小,它会变小,如果我把窗户变大,它会变大 至于按钮移动

因此,我开始了自己的小项目,主要是使用JPanel组件构建一个简单的文本编辑器。目前,我已将我的尺码设置为:

tfMain.setPreferredSize(new Dimension(550,650));
它可以工作,但不能很好地扩展。如果我调整JFrame的大小,我的所有组件都会四处移动,试图适应。我的tfMain保持不变,因为我已将其设置为550x650。因此,要明确的是;启动程序时,我的tfMain应为550x650。如果我把窗户变小,它会变小,如果我把窗户变大,它会变大

至于按钮移动的问题,我认为与我的布局有关。现在我正在使用BorderLayout,但我认为长方体或网格可能更好

编辑: 我似乎在GridLayout的帮助下解决了组件四处飞行的问题。不过,它确实增加了一些填充物,所以我不确定这是怎么回事。 以下是我目前的代码:

public class Viewer extends JPanel {
    private Controller controller;
    private JPanel jpEverything = new JPanel();
    private JTextArea taMain = new JTextArea();

    public Viewer(Controller controller, ButtonPanel buttonPanel){
        this.controller = controller;
        jpEverything.setLayout(new BoxLayout(jpEverything,BoxLayout.Y_AXIS));
        setPreferredSize(new Dimension(500,600));
        taMain.setPreferredSize(new Dimension(400,500));
        jpEverything.add(buttonPanel);
        jpEverything.add(taMain);
        add(jpEverything);

    }
}
这就是它的样子:

“我将构建一个简单的文本编辑器,主要使用JPanel组件。”不要忘记用于。。。文本编辑器。(1) 看。(2) 使用适当的布局管理器来处理大小调整。并将代码的相关部分与大小调整下的行为的确切说明一起发布。请确保我们可以编译它。我建议您应该使用BorderLayout作为主布局。然后使用FlowLayout创建面板,并将按钮添加到面板中。然后使用
BorderLayout.PAGE\u START
约束将面板添加到框架中。然后将JTextArea添加到JScrollPane中,并使用
BorderLayout.CENTER
将滚动窗格添加到框架中。然后,当框架调整大小时,文本区域将获得额外的空间。我们无法编译它。继续读下去。