【问题标题】:Swing/AWT - Creating GUI programmaticallySwing/AWT - 以编程方式创建 GUI
【发布时间】:2012-04-17 11:18:57
【问题描述】:

我正在尝试通过手动编码(不使用 GUI 工具)使用 Java 创建一个 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 工具的原因是什么?它们让生活更轻松。
  • @kevingreen:一个重要的原因是帮助人们在使用 GUI 工具之前更好地理解 Swing。然后,如果您在使用 GUI 工具解决问题时遇到问题,您将更容易理解如何解决它。我强烈鼓励在这项努力中的原始海报。 1+。 1+ 到 kevingreen,因为他在下面的出色回答。
  • @HovercraftFullOfEels 我的感觉正好相反。我认为在构建时看到 Swing 布局的可视化表示将帮助 Brian 了解事物如何以比尝试/编译/错误循环更容易的方式交互。您总是可以在后台查看代码(无论如何都是 Eclipse/Netbeans)。 Netbeans 将允许您自定义代码并立即在 GUI 工具中呈现它们。但不管怎样,我也鼓励这种努力。

标签: java swing user-interface layout awt


【解决方案1】:

检查A Visual Guide to Layout Managers。这将帮助您进行布局选择。

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

【讨论】:

  • “在面板中使用面板” 另见使用 nested layouts 的示例。
猜你喜欢
  • 2013-09-25
  • 2010-10-07
  • 1970-01-01
  • 2013-08-11
  • 2016-06-15
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多