Java Swing/AWT-以编程方式创建GUI

Java Swing/AWT-以编程方式创建GUI,java,swing,user-interface,layout,awt,Java,Swing,User Interface,Layout,Awt,我正在尝试使用Java手工编写GUI(不使用GUI工具) 我试图创造一些像下面的图片,但它没有出来,因为我想要它。(它是由一个名为Pencil的实体模型应用程序创建的) 这是迄今为止的代码: import java.awt.*; import javax.swing.*; import javax.swing.JTable; public class GUI extends JFrame { public void buildGui() { JFrame f

我正在尝试使用Java手工编写GUI(不使用GUI工具)

我试图创造一些像下面的图片,但它没有出来,因为我想要它。(它是由一个名为Pencil的实体模型应用程序创建的)

这是迄今为止的代码:

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);
    }
}
你知道我可以用什么布局来创建GUI设置,或者如何通过编码来实现吗?

检查。这将帮助您进行布局选择


另外,考虑在面板中使用面板。每一个都具有所需的布局,以实现所需的外观。如果没有GUI构建工具,您将需要编译/运行/编译/运行…以查看事情的进展情况

不想使用GUI工具的原因是什么?kevingreen:一个很好的原因是在使用GUI工具之前帮助人们更好地理解Swing。然后,如果您在使用GUI工具解决问题时遇到困难,您将更容易理解如何修复它。我强烈鼓励原创海报在这方面的努力。1+. 还有1+感谢kevingreen在下面的出色回答。@fullofeels我感觉正好相反。我认为,在构建时看到Swing布局的可视化表示将有助于Brian了解事物如何以比try/compile/error循环更简单的方式进行交互。您可以随时查看代码(无论如何,Eclipse/Netbeans)。Netbeans将允许您自定义代码,并立即在GUI工具中呈现它们。但无论哪种方式,我也鼓励这种努力。“在面板中使用面板”请参见下面的使用示例。