尝试使用Java创建GUI,但无法以我想要的方式实现它们 [英] Trying to create a GUI using java but not able to implement them the way i wanted

查看:72
本文介绍了尝试使用Java创建GUI,但无法以我想要的方式实现它们的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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上有三个可用的按钮,用户可以通过这些按钮发送数据或存储数据. GUI还包含标签,这些标签告诉用户哪种文本框适用于哪种数据类型. 现在,对象的修饰并没有达到我想要的方式.所有标签都放在一个地方,而且盒子的尺寸很大.试图找到关于stalkoverflow的解决方案,但一无所获.

Details about the GUI- I am trying to create a GUI which have four textbox where user can enter his details and there are three buttons available on GUI by which user can send the data or store the data. The GUI also contains labels which tells the user which textbox is for which type of data. Now the allignment of the objects are not coming the way i wanted it. All the labels are coming at one place and the size of box is very big. Tried to find a solution on stalkoverflow but got nothing.

我想要这样的东西---- 名称-文本框0 ID-文本框1 AGE- textbox2 地址-textbox3

i want something like this---- Name- textbox0 ID- textbox1 AGE- textbox2 ADDRESS- textbox3

插入更新删除

但得到类似---- textbox0

but getting something like---- textbox0

                     textbox1

名称 ID 年龄 地址文本框2

Name ID AGE Address textbox2

                     textbox3

      Insert   Update   Delete  

推荐答案

这不是您可以做的最好看的事情,但这很简单,也是您的一个不错的开端.

This is not the best looking thing you can do, but it's simple and a good start for you.

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);,相反,您以相反的方式进行了操作.
  • 不确定为什么需要长度为120的文本字段.
  • 致电frame.pack()而不是自己设置大小.
  • 看看缩进对代码有什么作用.
  • 您可以自己完成其余的面板.
    • Notice that I call frame.getContentPane().add(buttonsPanel, BorderLayout.SOUTH); with the panel as the first argument and the position second, you did it the other way around.
    • Not sure why you need text fields of length 120.
    • Call frame.pack() instead of setting the size yourself.
    • See what indentation does to the code.
    • You can complete the rest of the panels by yourself.
    • 这篇关于尝试使用Java创建GUI,但无法以我想要的方式实现它们的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆