Пытался создать графический интерфейс с использованием Java, но не смог реализовать их так, как я хотел
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);
}
}
Подробная информация о графическом интерфейсе. Я пытаюсь создать графический интерфейс с четырьмя текстовыми полями, в которые пользователь может вводить свои данные, и в графическом интерфейсе есть три кнопки, с помощью которых пользователь может отправлять или сохранять данные. Графический интерфейс также содержит метки, которые сообщают пользователю, какое текстовое поле для какого типа данных. Теперь выравнивание объектов происходит не так, как я хотел. Все этикетки идут в одном месте, а размер коробки очень большой. Пытался найти решение по stalkoverflow, но ничего не получил.
Я хочу что-то вроде этого ---- Имя - текстовое поле0 ID- текстовое поле1 ВОЗРАСТ - текстовое поле2 АДРЕС - текстовое поле3
Вставить обновление Удалить
но получаю что-то вроде ---- textbox0
textbox1
Имя ID ВОЗРАСТ Адрес textbox2
textbox3
Insert Update Delete
2 ответа
Это не самая привлекательная вещь, которую вы можете сделать, но она простая и хорошее начало для вас.
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()
вместо того, чтобы устанавливать размер самостоятельно. - Посмотрите, что отступ делает с кодом.
- Вы можете закончить остальные панели самостоятельно.
Я предлагаю почитать о разных макетах здесь. Это даст вам больше идеи, как вы можете выложить свои вещи. Затем вы можете поэкспериментировать, чтобы узнать, какой из них вы на самом деле хотите.
Тем не менее, я считаю, что графическое оформление графического интерфейса намного проще, и у IntelliJ есть довольно хороший конструктор графического интерфейса, который я часто использовал. После этого вы сможете поиграть с менеджерами компоновки и JPanels, чтобы получить эффект, который вы действительно хотите.