import javax.swing.*;
import java.awt.*;
class MenuPanel extends JPanel {
JButton setTextColor;
JSlider setMobNumber;
MenuPanel() {
setLayout(null);
setBackground(Color.LIGHT_GRAY);
setTextColor = new JButton("Change Text Color");
setMobNumber = new JSlider(1, 10);
setTextColor.setBounds(10, 40, 20, 10);
setMobNumber.setBounds(10, 80, 20, 10);
add(setTextColor);
add(setMobNumber);
setTextColor.setFocusable(false);
setMobNumber.setFocusable(false);
}
}
class GameBoard extends JFrame {
MenuPanel menuPanel = null;
GameBoard() {
setTitle("MyGame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
menuPanel = new MenuPanel();
add(menuPanel, BorderLayout.WEST);
setSize(600, 500);
setVisible(true);
}
}
public class MyGame {
public static void main(String args[]) {
new GameBoard();
}
}
这是我的Java代码。我想在主框架上制作菜单面板。所以我做了上面的代码并附上了 主框架代码上的“添加(menuPanel)”。但是我的菜单面板没有显示出来。我该怎么办。我想 对此很难。但我不知道我做错了什么。
答案 0 :(得分:1)
避免使用null
布局,像素完美布局是现代ui设计中的一种幻觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正
BorderLayout
依赖于您的MenuPanel
首选大小来说明它可能的大小,这些信息通常由布局管理器生成,但是因为您已将布局管理器设置为{ {1}},它使用默认大小null
代替。
简单的答案是使用适当的布局管理器并允许底层API做出关于如何布置最佳组件的决策,其中考虑了这些组件可能需要在不同方面进行大小调整的差异系统...
答案 1 :(得分:0)
我刚刚测试了您的代码并且它可以正常工作,但框架没有调整到面板大小,因此看起来没有添加面板。但是,调整框架大小将显示面板。尝试使用setPreferredSize(new Dimension(width, height))
为面板指定首选尺寸,然后在添加pack()
后在框架上调用MenuPanel
。