为什么我的 Swing GUI 没有显示所有添加的按钮?
Why my Swing GUI is not showing all the buttons added?
有人能告诉我为什么我的 Java Swing GUI 没有在框架上显示所有添加的按钮吗?当我添加 5 个按钮时,它只显示其中的 4 个,如果我添加 4 个按钮,它只显示其中的 3 个。
请告诉我这是什么问题。
我也尝试将它们添加到面板上,但是 GUI 没有显示一个。
package p2;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Gui extends JFrame {
public Gui(){
//Frame
JFrame fr=new JFrame("Calculator");
//Panel
JPanel p=new JPanel();
p.setBounds(10, 10, 200, 200);
p.setBackground(Color.cyan);
//Button
JButton b1=new JButton("Button 1");
b1.setBounds(20, 20, 40, 30);
JButton b2=new JButton("Button 2");
b2.setBounds(20, 80, 40, 30);
fr.add(p);
p.add(b1);p.add(b2);
fr.setVisible(true);
fr.setSize(300, 400);
fr.setLayout(null);
}
public static void main(String[] args) {
new Gui();
}
}
首先:不要使用"null"布局。但是当你使用任何布局时,你必须在添加任何组件之前设置它。
要解决您的问题,您只需向上移动 fr.setLayout(null)
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Gui extends JFrame {
public Gui() {
// Frame
JFrame fr = new JFrame("Calculator");
// Panel
JPanel p = new JPanel();
p.setBounds(10, 10, 200, 200);
p.setBackground(Color.cyan);
// Button
JButton b1 = new JButton("Button 1");
b1.setBounds(20, 20, 40, 30);
JButton b2 = new JButton("Button 2");
b2.setBounds(20, 80, 40, 30);
fr.setLayout(null); // set layout before adding of components.
fr.add(p);
p.add(b1);
p.add(b2);
fr.setVisible(true);
fr.setSize(300, 400);
}
public static void main(String[] args) {
new Gui();
}
}
是因为下面一行:
fr.setLayout(null);
只要删除它就可以了。
有人能告诉我为什么我的 Java Swing GUI 没有在框架上显示所有添加的按钮吗?当我添加 5 个按钮时,它只显示其中的 4 个,如果我添加 4 个按钮,它只显示其中的 3 个。
请告诉我这是什么问题。
我也尝试将它们添加到面板上,但是 GUI 没有显示一个。
package p2;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Gui extends JFrame {
public Gui(){
//Frame
JFrame fr=new JFrame("Calculator");
//Panel
JPanel p=new JPanel();
p.setBounds(10, 10, 200, 200);
p.setBackground(Color.cyan);
//Button
JButton b1=new JButton("Button 1");
b1.setBounds(20, 20, 40, 30);
JButton b2=new JButton("Button 2");
b2.setBounds(20, 80, 40, 30);
fr.add(p);
p.add(b1);p.add(b2);
fr.setVisible(true);
fr.setSize(300, 400);
fr.setLayout(null);
}
public static void main(String[] args) {
new Gui();
}
}
首先:不要使用"null"布局。但是当你使用任何布局时,你必须在添加任何组件之前设置它。
要解决您的问题,您只需向上移动 fr.setLayout(null)
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Gui extends JFrame {
public Gui() {
// Frame
JFrame fr = new JFrame("Calculator");
// Panel
JPanel p = new JPanel();
p.setBounds(10, 10, 200, 200);
p.setBackground(Color.cyan);
// Button
JButton b1 = new JButton("Button 1");
b1.setBounds(20, 20, 40, 30);
JButton b2 = new JButton("Button 2");
b2.setBounds(20, 80, 40, 30);
fr.setLayout(null); // set layout before adding of components.
fr.add(p);
p.add(b1);
p.add(b2);
fr.setVisible(true);
fr.setSize(300, 400);
}
public static void main(String[] args) {
new Gui();
}
}
是因为下面一行:
fr.setLayout(null);
只要删除它就可以了。