制作JAVA GUI时的布局问题

pro*_*spk 1 java user-interface swing

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

在此输入图像描述

所以问题是所有按钮都是相互内联的,而我希望它们是一个在另一个下面,即Add Contact在下面Show 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);
    }
}
`
Run Code Online (Sandbox Code Playgroud)

And*_*son 5

围绕'使用布局'有一些很好的答案.这个例子支持相同的建议,但也引入了将一个布局嵌套在另一个布局中的概念.EG JPanel含有JButtons有一个GridLayout.该面板放置在NORTH面板中,然后将面板添加到WEST主"gui"面板中.

其他的组件,以显示如何按钮的列增加可能与在主用户界面的其他组件一起去.

Contact.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);
    }
}
Run Code Online (Sandbox Code Playgroud)

截图

在此输入图像描述