尝试使用java创建GUI但不能以我想要的方式实现它们

时间:2014-05-01 13:42:24

标签: java swing label javax.swing.text

import javax.swing.*;
import java.awt.*;
public class SQlUI {
public static void main(String[] args){
SQlUI user=new SQlUI();
user.go();
}
public void go(){   
//Creating a Frame
JFrame frame=new JFrame();
//Creating three Panels
JPanel panel0=new JPanel();
JPanel panel1=new JPanel();
JPanel panel2=new JPanel();

//Creating three Buttons
JButton button0=new JButton("INSERT");
JButton button1=new JButton("UPDATE");
JButton button2=new JButton("DELETE");

//Adding panel0 to the frame which contains three butoon objects
frame.getContentPane().add(BorderLayout.SOUTH,panel0);
panel0.add(button0);
panel0.add(button1);
panel0.add(button2);

//Creating four textbox
JTextField textbox0 = new JTextField(120);
JTextField textbox1 = new JTextField(120);
JTextField textbox2 = new JTextField(120);
JTextField textbox3 = new JTextField(120);

//Adding panel1 to the frame which contains four textbox objects
frame.getContentPane().add(BorderLayout.EAST,panel1);
//Using BoxLayout managaer for panel1 objects
panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
panel1.add(textbox0);
panel1.add(textbox1);
panel1.add(textbox2);
panel1.add(textbox3);

//Adding panel2 to the frame which contains four label objects
frame.getContentPane().add(BorderLayout.WEST,panel2);
//Using BoxLayout managaer for panel1 objects
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));

//Creating four labels 
JLabel label0=new JLabel("Name");
label0.setSize(50,50);
label0.setVisible(true);
JLabel label1=new JLabel("ID");
label1.setSize(50,50);
label1.setVisible(true);
JLabel label2=new JLabel("AGE");
label2.setSize(50,50);
label2.setVisible(true);
JLabel label3=new JLabel("ADDRESS");
label3.setSize(50,50);
label3.setVisible(true);
//Adding labels to panel2
panel2.add(label0);
panel2.add(label1);
panel2.add(label2);
panel2.add(label3);

//Setting frame size and visiblity
frame.setSize(500,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}

有关GUI的详细信息 - 我正在尝试创建一个具有四个文本框的GUI,用户可以在其中输入其详细信息,GUI上有三个按钮可供用户发送数据或存储数据。 GUI还包含标签,告诉用户哪个文本框适用于哪种类型的数据。                         现在,对象的分配并不是我想要的方式。所有的标签都来自一个地方,盒子的大小非常大。试图在stalkoverflow上找到一个解决方案但什么都没有。

我想要这样的东西---- 名称 - 文本框0 ID-文本框1 AGE-文本框2 ADDRESS-textbox3

插入更新删除

但得到类似的东西----                          textbox0

                     textbox1

名称 ID 年龄 地址textbox2

                     textbox3

      Insert   Update   Delete  

2 个答案:

答案 0 :(得分:1)

这不是你能做的最好看的事情,但它很简单,也是你的良好开端。

public class SQlUI {

    public static void main(String[] args) {

        SQlUI user = new SQlUI();
        user.go();
    }

    public void go() {

        JFrame frame = new JFrame();

        JPanel buttonsPanel = new JPanel();
        JButton insert = new JButton("INSERT");
        JButton update = new JButton("UPDATE");
        JButton delete = new JButton("DELETE");
        buttonsPanel.add(insert);
        buttonsPanel.add(update);
        buttonsPanel.add(delete);
        frame.getContentPane().add(buttonsPanel, BorderLayout.SOUTH);

        JPanel centerPanel = new JPanel();
        centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));

        JPanel namePanel = new JPanel();
        JLabel nameLabel = new JLabel("Name");
        JTextField nameField = new JTextField(120);
        namePanel.add(nameLabel);
        namePanel.add(nameField);

        JPanel idPanel = new JPanel();
        JLabel idLabel = new JLabel("ID");
        JTextField idField = new JTextField(120);
        idPanel.add(idLabel);
        idPanel.add(idField);

        centerPanel.add(namePanel);
        centerPanel.add(idPanel);
        frame.getContentPane().add(centerPanel, BorderLayout.CENTER);

        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
  • 请注意,我将frame.getContentPane().add(buttonsPanel, BorderLayout.SOUTH);作为第一个参数调用frame.pack(),第二个位置调用第二个位置,反之亦然。
  • 不确定为什么需要长度为120的文本字段。
  • 请致电{{1}},而不是自己设置尺寸。
  • 查看缩进对代码的作用。
  • 您可以自己完成其余的面板。

答案 1 :(得分:0)

我建议您阅读不同的布局here。它会让您更好地了解如何摆放物品。然后,您可以尝试找出您真正想要的那个。

那说我觉得以图形方式设计GUI要容易得多,而且我经常使用IntelliJ a pretty good GUI builder。然后,您就可以使用布局管理器和JPanel来获得您真正想要的效果。