尝试使用java创建GUI,但无法按照我想要的方式实现它们
关于GUI的详细信息-我正在尝试创建一个GUI,它有四个文本框,用户可以在其中输入详细信息,GUI上有三个按钮,用户可以通过这些按钮发送数据或存储数据。GUI还包含标签,告诉用户哪种文本框对应哪种类型的数据。 现在,这些物体的排列方式并不是我想要的。所有的标签都在一个地方,盒子的大小非常大。试图找到一个解决方法,但一无所获 我想要这样的东西---- 名称-textbox0 ID-textbox1 年龄-文本框2 地址-文本框3 插入更新删除 但是得到了---- 文本框0尝试使用java创建GUI,但无法按照我想要的方式实现它们,java,swing,label,javax.swing.text,Java,Swing,Label,Javax.swing.text,关于GUI的详细信息-我正在尝试创建一个GUI,它有四个文本框,用户可以在其中输入详细信息,GUI上有三个按钮,用户可以通过这些按钮发送数据或存储数据。GUI还包含标签,告诉用户哪种文本框对应哪种类型的数据。 现在,这些物体的排列方式并不是我想要的。所有的标签都在一个地方,盒子的大小非常大。试图找到一个解决方法,但一无所获 我想要这样的东西---- 名称-textbox0 ID-textbox1 年龄-文本框2 地址-文本框3 插入更新删除 但是得到了---- 文本框0 import javax
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);
}
}
名字
身份证件
年龄
地址文本框2
textbox1
我建议阅读不同的布局。这会让你更了解如何布置物品。然后你可以通过实验找出你真正想要的
也就是说,我发现以图形方式设计GUI要容易得多,IntelliJ有我经常使用的功能。然后,您就可以使用布局管理器和JPanel来获得您真正想要的效果。这不是您能做的最漂亮的事情,但它很简单,对您来说是一个好的开始
textbox3
Insert Update Delete
- 注意,我调用了
将面板作为第一个参数,位置作为第二个参数,则相反frame.getContentPane().add(buttonPanel,BorderLayout.SOUTH)
- 不确定为什么需要长度为120的文本字段
- 调用
,而不是自己设置大小frame.pack()
- 查看缩进对代码的作用
- 您可以自己完成其余面板
BoxLayout
是否有特殊原因?您不在代码中使用缩进是否有特殊原因?frame.getContentPane().add(BorderLayout.SOUTH,panel0)代码>无法工作,您的参数被交换。@user1803551先生,您能告诉我什么缩进吗means@SarahTattersall是的,我故意在代码中使用BoxLayout,因为我只希望一行中有一个文本框。如果我没有使用BoxLayout manager,那么所有四个文本框都会一行接一行地出现。使用120作为textfield长度没有具体原因。我使用frame.pack();而不是自己设置大小,它对我现有的代码没有做任何修改。我从您的代码中学到了很多东西,但最重要的是frame.pack()。从现在开始,我将尝试以您的风格编写代码,这样可以避免复杂的问题。(就像我用板条箱包装了四个窗格,但所有窗格都包含相同类型的对象。您也创建了两个窗格,但它们包含四种不同类型的对象。)使用[frame.getContentPane().add(buttonsPanel,BorderLayout.SOUTH);]和[frame.getContentPane().add(BorderLayout.SOUTH,buttonsPanel);]?@Shantanu查看under方法摘要并告诉我自己有什么不同。根据我的理解,在容器中传递参数的顺序将以相同的方式显示。例如,如果我按此顺序传递参数(名称、id、年龄、地址),它将以这种方式显示。如果我以相反的顺序传递参数,如(地址、年龄、id、名称),那么它将按此顺序显示。我说的对吗?@Shantanu查看函数add
,然后查看传递给它的参数类型,并推断调用了哪些add
方法。然后看看描述,看看它是做什么的。
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);
}
}