我有一个 JFrame,我想添加一个带有 JButton 的 JPanel。但互联网上的所有指南似乎都是错误的。如果我按照这些说明操作,我的按钮将不会显示。
我知道有一些与我类似的问题,但这些帖子的代码太多,而不是孤立代码中的问题。所以我无法从中找出他们的解决方案是什么。
public class MainClass {
public static void main (String[]args) {
Frame frame = new Frame();
}
}
public class Frame extends JFrame {
private JButton btn;
private JPanel pnl = new JPanel();
Frame () {
setSize(400,400);
setLayout(new FlowLayout());
setVisible(true);
setButtons();
add(pnl);
}
private void setButtons() {
btn = new JButton();
pnl.add(btn);
}
}
最佳答案
setVisible(true);
setButtons();
add(pnl);
您的组件的大小为 (0, 0),因此无需绘制任何内容。
解决方案是在将所有组件添加到框架后使框架可见:
setButtons();
add(pnl);
setVisible(true);
当您使框架可见或使用 pack() 方法时,布局管理器将被调用,以便知道组件将具有大小/位置。
but these posts have too much code instead of the problem in an isolated code.
我建议您从 Swing Tutorial 中的代码示例开始Swing 基础知识。下载示例并将其用作结构更好的类(class)的起点。例如,所有 Swing 组件都应在事件调度线程 (EDT)
上创建。
关于java - 将 JComponent 添加到 JPanel 并将 JPanel 添加到 JFrame 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59374210/