【问题标题】:GUI Form Creating By Hand [closed]手动创建 GUI 表单 [关闭]
【发布时间】:2013-03-27 16:46:38
【问题描述】:

我有一个 jframe,其中包含三个文本字段和两个单选按钮(用于选择是或否)。

应该是这样的:

但是,我的代码是这样的:

我的代码:

public class editFrame extends JFrame {

JButton saveButton;
JButton cancelButton;
JRadioButton radioB1;
JRadioButton radioB2;

public editFrame() {

    JPanel wrapper = new JPanel();
    wrapper.add(createForm());
    add(wrapper, BorderLayout.WEST);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setBounds(100, 50, 500, 600);
    this.setVisible(true);
}

public JPanel createForm() {
    String[] labels = {"ID", "Name", "Date"};
    JPanel panel = new JPanel();

    JTextField idtf = new JTextField(10);
    JTextField nametf = new JTextField(10);
    JTextField datetf = new JTextField(10);
    panel.add(idtf);
    panel.add(nametf);
    panel.add(datetf);

    radioB1 = new JRadioButton("Yes");
    radioB2 = new JRadioButton("No");
    ButtonGroup group = new ButtonGroup();
    group.add(radioB1);
    group.add(radioB2);
    panel.add(radioB1);
    panel.add(radioB2);
    saveButton = new JButton("update");
    cancelButton = new JButton("Cancel");
    panel.add(saveButton);
    panel.add(cancelButton);

    SpringLayout sL = new SpringLayout();
    panel.setLayout(sL);
    SpringUtilities.makeCompactGrid(panel, 3, 2, 100, 50, 15, 20);

    return panel;
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            editFrame edF = new editFrame();
        }
    });
}

} 借用状态文本不会显示在单选按钮旁边。 我的第二个主要问题是使用此代码,我无法访问文本字段。 我需要稍后访问文本字段...

【问题讨论】:

  • 如果您使用的是 Netbeans IDE,那么它允许对 Swing 应用程序进行可视化设计
  • @Abu 是的,它有这个功能,但我想手动创建 GUI...
  • 使用该功能,然后比较您的实现,因为有时手动实现非常困难
  • @Abu 我非常不同意使用 GUI 设计器。如果他通过拖放创建挥杆,他永远不会理解挥杆。
  • @Sajjad- 我认为你需要通过官方的摇摆视觉布局教程。并从头开始,一一了解每一个Layout。然后进行 GUI 设计。这很容易相信我..

标签: java swing


【解决方案1】:

首先,收音机的标签没有显示,因为您没有创建它并将其添加到面板。创建它并将其添加到 radioB1 之前的面板中。此外,您应该在 radioB2 之前添加一些不可见(空)标签(或使用其他填充组件来填充单元格 - 也许这会有所帮助:http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html#filler)。

另外,您可以向面板添加另一个填充组件,而不是 saveButton。然后我将创建另一个面板(buttonPane),它包含保存和取消按钮,并将这个 buttonPane 添加到主面板而不是 cancelButton。按钮面板可以使用 BoxLayout,按钮之间可以是水平胶水(如您在上面的链接中所见)。

应该是这样的。但这里有一个警告。您正在以这种方式在循环中创建 JTextFields,您以后无法引用它们,即。当您需要获取文本时。您应该将它们的引用保留为单独的变量,或者将它们添加到数组中,以便在按下更新按钮时获取值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多