Java 在桌面GUI中调整组件的大小

Java 在桌面GUI中调整组件的大小,java,swing,user-interface,awt,layout-manager,Java,Swing,User Interface,Awt,Layout Manager,我正在用Java为数据结构制作GUI。我想要一个功能,每当用户单击表单顶部的最大化按钮时,表单中的组件和所有内容都应该随着窗口的扩展而调整大小,反之亦然。我找了很多,但找不到解决办法 如何扩展GUI 你能帮我写一些简短的代码吗,比如当按下“最大化”按钮时如何调整工具栏的大小 我会做得更好。下面是一个简短的代码示例,其中显示了5个,根据它们在BorderLayout中的位置,它们具有不同的调整大小行为 import java.awt.BorderLayout; import javax.swing

我正在用Java为数据结构制作GUI。我想要一个功能,每当用户单击表单顶部的最大化按钮时,表单中的组件和所有内容都应该随着窗口的扩展而调整大小,反之亦然。我找了很多,但找不到解决办法

如何扩展GUI

你能帮我写一些简短的代码吗,比如当按下“最大化”按钮时如何调整工具栏的大小

我会做得更好。下面是一个简短的代码示例,其中显示了5个,根据它们在
BorderLayout
中的位置,它们具有不同的调整大小行为

import java.awt.BorderLayout;
import javax.swing.*;

public class ResizableToolBars {

    public static void showFrameWithToolBar(String toolBarPosition) {
        // the layout is important..
        JPanel gui = new JPanel(new BorderLayout());

        JToolBar tb = new JToolBar();
        // ..the constraint is also important
        gui.add(tb, toolBarPosition);
        tb.add(new JButton("Button 1"));
        tb.add(new JButton("Button 2"));
        tb.addSeparator();
        tb.add(new JButton("Button 3"));
        tb.add(new JCheckBox("Check 1", true));

        JFrame f = new JFrame(toolBarPosition + " Sreeeetchable Tool Bar");
        f.setContentPane(gui);
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setLocationByPlatform(true);
        f.pack();

        // we don't normally set a size, this is to show where 
        // extra space is assigned.
        f.setSize(400,120);
        f.setVisible(true);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                showFrameWithToolBar(BorderLayout.PAGE_START);
                showFrameWithToolBar(BorderLayout.PAGE_END);
                showFrameWithToolBar(BorderLayout.LINE_START);
                showFrameWithToolBar(BorderLayout.LINE_END);
                showFrameWithToolBar(BorderLayout.CENTER);
            }
        });
    }
}

  • 调整大小时,仔细观察每一项的效果
  • 查看JavaDocs以了解更多信息
  • 完成Java教程的课程。
如果您在这之后回到,您应该能够了解我是如何从更小的组件组中将其组合在一起的,每个组件在父容器的一个区域中以其自己的布局(在面板中)

你能帮我写一些简短的代码吗,比如当按下“最大化”按钮时如何调整工具栏的大小

我会做得更好。下面是一个简短的代码示例,其中显示了5个,根据它们在
BorderLayout
中的位置,它们具有不同的调整大小行为

import java.awt.BorderLayout;
import javax.swing.*;

public class ResizableToolBars {

    public static void showFrameWithToolBar(String toolBarPosition) {
        // the layout is important..
        JPanel gui = new JPanel(new BorderLayout());

        JToolBar tb = new JToolBar();
        // ..the constraint is also important
        gui.add(tb, toolBarPosition);
        tb.add(new JButton("Button 1"));
        tb.add(new JButton("Button 2"));
        tb.addSeparator();
        tb.add(new JButton("Button 3"));
        tb.add(new JCheckBox("Check 1", true));

        JFrame f = new JFrame(toolBarPosition + " Sreeeetchable Tool Bar");
        f.setContentPane(gui);
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setLocationByPlatform(true);
        f.pack();

        // we don't normally set a size, this is to show where 
        // extra space is assigned.
        f.setSize(400,120);
        f.setVisible(true);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                showFrameWithToolBar(BorderLayout.PAGE_START);
                showFrameWithToolBar(BorderLayout.PAGE_END);
                showFrameWithToolBar(BorderLayout.LINE_START);
                showFrameWithToolBar(BorderLayout.LINE_END);
                showFrameWithToolBar(BorderLayout.CENTER);
            }
        });
    }
}

  • 调整大小时,仔细观察每一项的效果
  • 查看JavaDocs以了解更多信息
  • 完成Java教程的课程。
如果您在这之后回到,您应该能够了解我是如何从更小的组件组中将其组合在一起的,每个组件在父容器的一个区域中以其自己的布局(在面板中)


我已经为GUI编写了“堆栈”代码。通常情况下,最好不要缩放每个组件,而是为特定组件提供额外的宽度或高度。它会调整大小以了解我的意思。在这种情况下,它实际上取决于用于在GUI中定位组件的布局管理器,以及添加组件时使用的约束。你能帮我写一些简短的代码吗?比如当按下“最大化”按钮时,如何调整工具栏的大小单击“复制代码并运行”,然后调整窗口的大小,并告诉我你是否需要调整工具栏的大小?您将看到gridbaglayout位和表格都会调整大小,以适合具有适当纵横比的可用空间@AndrewThompson“嵌套布局示例…”我认为这回答了OP的问题,不是吗?因此,它可能是一个答案,而不是一个注释(+1)。我已经为GUI编写了“堆栈”代码。通常,缩放每个组件并不是最好的,而是为特定组件提供额外的宽度或高度。它会调整大小以了解我的意思。在这种情况下,它实际上取决于用于在GUI中定位组件的布局管理器,以及添加组件时使用的约束。你能帮我写一些简短的代码吗?比如当按下“最大化”按钮时,如何调整工具栏的大小单击“复制代码并运行”,然后调整窗口的大小,并告诉我你是否需要调整工具栏的大小?您将看到gridbaglayout位和表格都会调整大小,以适合具有适当纵横比的可用空间@AndrewThompson“嵌套布局示例…”我认为这回答了OP的问题,不是吗?因此,它可能是一个答案,而不是一个评论(+1)。@mKorbel谢谢-我正在寻找一种方法,将6个GUI的截图塞进一个答案中(而不是被唤醒)。)有人在房间里有太多的时间来创建屏幕截图。我一直在发表关于嵌套布局答案的投票帖子(也许我应该尝试将其添加到Swing wiki标签上):-)+1对@Robin“创建屏幕截图的时间太多了”感到内疚,这比编织篮子更平静。我的医生说没关系,但是护士们更喜欢篮子来卖……)我在Swing标记中添加了一个部分。让我们看看它是否会变好approved@mKorbel谢谢-我正在寻找一种方法,将6个GUI的截图塞进一个答案中(而不是被唤醒)有人在房间里有太多的时间来创建屏幕截图。我一直在发表关于嵌套布局答案的投票帖子(也许我应该尝试将其添加到Swing wiki标签上):-)+1对@Robin“创建屏幕截图的时间太多了”感到内疚,这比编织篮子更平静。我的医生说没关系,但是护士们更喜欢篮子来卖……)我在Swing标记中添加了一个部分。让我们看看它是否得到批准