java Gridbag布局和绘图
我正在做一个小游戏,一开始我想用JCheckBox
来选择语言(之后他们很少有人来设置游戏),然后在上面画一个jlabel
带有游戏名称的图片,或者在那里画一张图片,问题是,我不知道其他任何方法如何用复选框将面板居中,然后使用GridBagLayout
。当我使用此方法时,我无法在框架上绘制任何内容,如果可能的话,我也想删除复选框周围的灰线,感谢您的帮助,谢谢
这是我的第二个问题,我还不能添加图片,所以这里有一个图片链接:
下面是框架的代码
private GamePlan plan;
private JFrame frame;
private String language;
private JPanel panel;
private JCheckBox englishBox;
private JCheckBox germanBox;
public Settings(GamePlan plan){
this.plan = plan;
frame = new JFrame();
frame.setSize(600, 500);
frame.setLocation(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
frame.setResizable(false);
frame.setVisible(true);
panel = new JPanel(new GridLayout(2, 1));
englishBox = new JCheckBox("English", false);
germanBox = new JCheckBox("German", false);
englishBox.addActionListener(new EnglishLanguage());
germanBox.addActionListener(new GermanLanguage());
panel.add(englishBox);
panel.add(germanBox);
englishBox.setOpaque(false);
germanBox.setOpaque(false);
panel.setOpaque(false);
frame.add(panel);
frame.getContentPane().setBackground(new Color(216,252,202));
}
# 1 楼答案
如果没有一个完整的例子,我真的说不出你做错了什么。我甚至不知道你想在哪里添加图像。但不要试图在画框上画画。取而代之的是画一个
JPanel
下面是一个例子,你可以从中获得一些见解
我也不知道你为什么喜欢画画。用
JLabel
和ImageIcon
也可以很容易地做到这一点问题的最后一部分,正如@Jere所指出的,您可以使用
setFocusPainted
作为复选框germanBox.setFocusPainted(false);