Когда я пытаюсь добавить JButton и JLabel в JFrame, они оба конфликтуют друг с другом, в котором все JButtons исчезнут, и будет видна только JLabel. JLabel по какой-то причине пошла бы в самую левую сторону JFrame вместо желаемого места, в котором я его запустил. Я новичок в материалах, связанных с GUI, и я готов учиться на этих ошибках.Как добавить JButtons и JLabels без конфликтов?
Вот мой код:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Windowb extends JFrame{
static String title = "This is a JFrame";
static int width = 500;
static int height = 400;
private static final int BUTTON_LOCATION_X = 46;
private static final int BUTTON_LOCATION_Y = 80;
public static void main(String[]args){
Windowb simple = new Windowb(title, width, height);
JPanel p = new JPanel();
p.setLayout(null);
JLabel c1 = new JLabel("Name: ");
JButton b1 = new JButton("Name:");
JButton b2 = new JButton("Grade:");
JButton b3 = new JButton("GPA");
b1.setBounds(BUTTON_LOCATION_X, BUTTON_LOCATION_Y, 90, 20);
b2.setBounds(50, 170, 90, 20);
b3.setBounds(50, 240, 90, 20);
c1.setLocation(100, 250);
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null, "ActionListener is working!");
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null, "The second one works too!");
}
});
b3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null, "Surprise!");
}
});
p.add(b1);
p.add(b2);
p.add(b3);
simple.add(p);
simple.add(c1);
}
public Windowb(String t, int w, int h){
setVisible(true);
setResizable(true);
setSize(w, h);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(500, 100);
setTitle(t);
}
}
потому что каждая кнопка имеет такое же расположение в методе 'setBounds'. проверьте свои настройки b1, b2, b3'. Также не пытайтесь использовать нулевой макет, вместо этого продолжайте практику с другим менеджером макетов, предоставляемым java. https://docs.oracle.com/javase/tutorial/uiswing/layout/using.html –
все они имеют одинаковые местоположения x. но разные местоположения. Единственное, что отображается, это «Имя:», которое является JLabel. Нет Jbuttons. –
Первое, что такое 'Windowb'. Вы пытаетесь добавить компонент в этот 'простой' объект, который принадлежит' Windowb'. Следуйте простому правилу добавления компонентов. Пожалуйста, прочитайте эти статьи https://docs.oracle.com/javase/tutorial/uiswing/start/index.html –