Swing / AWT - Создание GUI программно - PullRequest
5 голосов
/ 03 апреля 2012

Я пытаюсь создать графический интерфейс с использованием Java путем кодирования вручную (без использования инструментов графического интерфейса).

Я пытаюсь создать что-то похожее на картинку ниже, но не получается так, как я хочу. (Он был создан с помощью приложения-макета Pencil)

enter image description here

Это код на данный момент:

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


public class GUI extends JFrame {

    public void buildGui() {


        JFrame frame = new JFrame("Hotel TV Scheduler");    

                Container contentPane = frame.getContentPane();
                contentPane.setLayout(new FlowLayout());

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());

                JPanel listPanel = new JPanel();
                listPanel.setLayout(new FlowLayout());

                JTable chOneTable = new JTable();
                JTable chTwoTable = new JTable();
                JTable listTable = new JTable();

                JButton rmvChOneButton = new JButton("Remove Channel");
                JButton rmvChTwoButton = new JButton("Remove Channel");

                listPanel.add(chOneTable);
                listPanel.add(chTwoTable);
                listPanel.add(listTable);
                listPanel.add(rmvChOneButton);
                listPanel.add(rmvChTwoButton);

                JPanel infoPanel = new JPanel();
                infoPanel.setLayout(new GridLayout());

                JLabel titleLabel = new JLabel("Title");
                JLabel genreLabel = new JLabel("Genre");
                JLabel durationLabel = new JLabel("Duration");
                JLabel actorLabel = new JLabel("Actor");
                JLabel directorLabel = new JLabel("Director");
                JLabel rentLabel = new JLabel("Rentable");
                JLabel synopsisLabel = new JLabel("Synopsis");

                JTextField txtTitle = new JTextField();
                JTextField txtGenre = new JTextField();
                JTextField txtDuration = new JTextField();
                JTextField txtActor = new JTextField();
                JTextField txtDirector = new JTextField();
                JTextField txtSynopsis = new JTextField();

                JCheckBox rentCB = new JCheckBox();

                infoPanel.add(titleLabel);
                infoPanel.add(txtTitle);
                infoPanel.add(genreLabel);
                infoPanel.add(txtGenre);
                infoPanel.add(durationLabel);
                infoPanel.add(txtDuration);
                infoPanel.add(actorLabel);
                infoPanel.add(txtActor);
                infoPanel.add(directorLabel);
                infoPanel.add(txtDirector);
                infoPanel.add(rentLabel);
                infoPanel.add(rentCB);
                infoPanel.add(synopsisLabel);
                infoPanel.add(txtSynopsis);


                contentPane.add(listPanel);
                contentPane.add(infoPanel);

                frame.setVisible(true);
    }
}

Любое представление о том, какие макеты я мог бы использовать для создания настройки графического интерфейса или как этого добиться, кодируя ее?

1 Ответ

3 голосов
/ 03 апреля 2012

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

Также подумайте об использовании панелей внутри панелей. Каждый с макетом, необходимым для достижения нужного вам вида. Без инструмента построения GUI вам нужно будет скомпилировать / запустить / скомпилировать / запустить ... чтобы посмотреть, как все устроено.

...