java - 制作 JAVA GUI 时的布局问题

标签 java swing user-interface

这是我的 JFrame 的截图.这将是我的应用程序的主窗口。

enter image description here

所以问题是所有的按钮都是内联的,而我希望它们一个在另一个下面,即 Add ContactShow Contacts 下.

那我该怎么做呢?

这是我的 JFrame 代码.

public class CRUDFrame extends JFrame {
    public CRUDFrame(){
        super("AppCRUD");
        setLayout(new FlowLayout());
        JButton button1, button2, button3, button4;

        button1 = new JButton(" Show Contacts ");
        button2 = new JButton(" Add Contact ");
        button3 = new JButton(" Update Number in a Contact ");
        button4 = new JButton(" Delete a Contact ");
        add(button1);       
        add(button2);  
        add(button3); 
        add(button4);
    }
}
`

最佳答案

围绕“使用布局”有一些很好的答案。此示例支持相同的建议,但也介绍了将一种布局嵌套在另一种布局中的概念。例如。包含 JButtonJPanel 有一个 GridLayout。该面板放置在面板的 NORTH 中,然后添加到主“gui”面板的 WEST

添加其他组件是为了显示按钮列可能如何与主用户界面中的其他组件结合在一起。

联系人.java

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

class Contact {

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new BorderLayout(5,5));
                gui.setBorder( new EmptyBorder(3,3,3,3) );

                JPanel controls = new JPanel( new BorderLayout(5,5) );

                JPanel buttons = new JPanel(new GridLayout(0,1,4,4));
                buttons.add( new JButton("Show") );
                buttons.add( new JButton("Add") );
                buttons.add( new JButton("Update Number") );
                buttons.add( new JButton("Delete") );
                buttons.setBorder( new TitledBorder("Contact") );

                controls.add( buttons, BorderLayout.NORTH );

                controls.add(new JScrollPane(new JTree()), BorderLayout.CENTER);

                gui.add(controls, BorderLayout.WEST);

                gui.add(new JTextArea("CardLayout for CRUD components.",10,30));

                gui.add(new JLabel("Output label.."), BorderLayout.SOUTH);

                JToolBar toolbar = new JToolBar();
                toolbar.add(new JCheckBox("Auto save", true));
                toolbar.add(new JCheckBox("Always On Top"));
                gui.add(toolbar, BorderLayout.NORTH);

                JOptionPane.showMessageDialog(null, gui);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

截图

enter image description here

关于java - 制作 JAVA GUI 时的布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776683/

相关文章:

java - 现在选择哪个 Java GUI 框架?

java - MVC如何与Java Swing GUI一起工作

java - 从 JHipster 开始

java - 如何创建一个类来对java中的文件进行排序

java - CardLayout不切换卡片

java - 窃取另一个应用程序 TreeView 的内容

c++ - Qt GUI Design - 是否有适合标签文本的不可见字符?

java - 如果aspectj可以单独使用,那么在Spring配置中使用Aspectj有什么好处

java - 如何在Java Gradle项目中包括外部jar文件,而不会在每次构建后将其删除?

java - 获取 DocumentListener 的间接源