Проблема с макетами в создании JAVA GUI - PullRequest
1 голос
/ 25 апреля 2011

Вот скриншот моего JFrame.Это будет главное окно моего приложения.

enter image description here

Итак, проблема в том, что все кнопки находятся на одной линии друг с другом, тогда как я хочу, чтобы они были одна под другой, т.е. 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);
    }
}
`

Ответы [ 3 ]

5 голосов
/ 25 апреля 2011

Были некоторые хорошие ответы, сосредоточенные вокруг «использовать макет». Этот пример поддерживает тот же совет, но также вводит концепцию вложения одного макета в другой. НАПРИМЕР. JPanel, содержащий JButton s, имеет 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);
    }
}

Скриншот

enter image description here

1 голос
/ 25 апреля 2011

Взгляните на http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html, в котором рассматриваются различные менеджеры компоновки, которые предлагает Swing.GridBagLayout - это, вероятно, то, что вам нужно.

1 голос
/ 25 апреля 2011

Используйте макет коробки и установите размер для каждой кнопки.Проверьте ссылку ниже.

http://download.oracle.com/javase/tutorial/uiswing/layout/box.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...