#java #swing #user-interface
#java #swing #пользовательский интерфейс
Вопрос:
Мой код-
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class Test2 extends JFrame {
JPanel panel = new JPanel();
JLabel label1 = new JLabel("Enter 1st Number");
JLabel label2 = new JLabel("Enter 2nd Number");
JLabel label3 = new JLabel("Press to add");
JLabel label4 = new JLabel("Check Answer");
JButton button = new JButton("Press");
JTextField text1 = new JTextField(50);
JTextField text2 = new JTextField(50);
public Test2() {
setTitle("Tutorial");
setVisible(true);
setSize(1080, 720);
setDefaultCloseOperation(EXIT_ON_CLOSE);
text1.setBounds(90,60,86,23);
text2.setBounds(233,60,92,23);
button.setBounds(161,109,89,23);
panel.add(text1);
panel.add(text2);
panel.add(button);
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(label4);
add(panel);
}
public static void main(String[] args) {
Test2 t = new Test2 ();
}
}
Я также собираюсь написать код для добавления 2 чисел, и если пользователь вводит буквы, я также создам исключение. Но я хочу, чтобы они сначала выровнялись. Я не могу использовать форму GUI, поскольку это для практики.
Комментарии:
1. Проблема здесь в том, что вы добавляете
Component
s кContainer
s, которые не имеют конкретногоLayout
значения, вы должны прочитать это docs.oracle.com/javase/tutorial/uiswing/layout/visual.html чтобы понять, что вам нужно сделать, в вашем конкретном случае вы можете узнать, как использоватьGridLayout
2. Вы бы использовали GridBagLayout .
Ответ №1:
Не используйте setBounds() .
используйте макет сетки из 4 строк и 2 столбцов
Ответ №2:
вам нужно использовать сетку с 2 столбцами и 4 строками, чтобы сделать их такими:
class Test2 extends JFrame {
JPanel panel = new JPanel();
JLabel label1 = new JLabel("Enter 1st Number");
JLabel label2 = new JLabel("Enter 2nd Number");
JLabel label3 = new JLabel("Press to add");
JLabel label4 = new JLabel("Check Answer");
JButton button = new JButton("Press");
JTextField text1 = new JTextField(50);
JTextField text2 = new JTextField(50);
public Test2() {
GridLayout gb = new GridLayout(4, 2);
panel.setLayout(gb);
panel.add(label1);
panel.add(text1);
panel.add(label2);
panel.add(text2);
panel.add(label3);
panel.add(button);
panel.add(label4);
add(panel);
setTitle("Tutorial");
setVisible(true);
setSize(250, 150);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
Test2 t = new Test2();
}
}