[英]Why isn't my JButton appearing on my JFrame?
我不确定为什么我的 JButton 没有出现在我的 JFrame 上。 这是代码:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
public class tttMain extends JPanel implements ActionListener {
private static final long serialVersionUID = 2294426281847625986L;
private static JFrame frame;
private static JPanel panel;
private static JButton b1, b2, b3, b4, b5, b6, b7, b8, b9;
private static ArrayList<JButton> buttonList;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
//vertical lines
g.drawLine(150, 65, 150, 340);
g.drawLine(260, 65, 260, 340);
//horizontal lines
g.drawLine(65, 150, 340, 150);
g.drawLine(65, 260, 340, 260);
}
public static void main(String[] args) {
frame = new JFrame();
panel = new JPanel();
frame.setSize(450, 450);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setContentPane(new tttMain());
frame.add(panel);
panel.setLayout(null);
b1 = new JButton("Hi Stack Overflow!");
b1.setBounds(85, 85, 65, 65);
panel.add(b1);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
}
有人可以帮帮我吗? 我以前使用过 JButtons 没有问题,所以我不知道为什么这不起作用。 这是我第一次使用图形 class 所以也许这可能是问题的一部分。
所以你的问题的“症状”是由panel.setLayout(null);
,但问题的根源是对组件布局的工作原理的误解。
布局管理器做了很多重要的工作,你应该花时间去学习和理解它们。
JPanel
默认使用FlowLayout
。 tttMain
(顺便说一下,它违反了社区命名约定;))从JPanel
扩展,因为您从不更改布局管理器,它使用的是FlowLayout
。
然后向它添加一个JPanel
,它的布局设置为null
。 这意味着它不再向其父级提供大小提示 - 因此它将以0x0
的大小进行布局,这导致我们遇到了潜在的问题。
简短的故事 - 不要使用null
布局。 长话短说,您可以考虑使用不同的方法,也许利用BorderLayout
并添加tttMain
() 和带有按钮的JPanel
,作为一个想法
我强烈建议您花一些时间了解并了解在容器中布局组件
这是因为您已将面板的布局设置为null
。 删除以下行,它将出现:
panel.setLayout(null);
我认为使用 null 布局没有问题,但是我总是指定 minimumSize 和 maximumSize。 使用绝对布局也不能很好地调整大小。 并且可能会导致一些问题。 我还在 eclipse 中使用 WindowBuilder,因为您可能不应该手动操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.