我已经开始设置我的JFrame的背景图像,但现在我的组件(我假设)卡在它后面。我曾尝试阅读有关顶级容器的信息,但我无法理解T_T。有人有主意吗 ?也许我需要找到另一种设置背景图像的方法?感谢您的任何帮助。 :
@SuppressWarnings("serial")
public class CopyOfMainMenu extends JFrame {
//Running the GUI
public static void main(String[] args) throws IOException {
CopyOfMainMenu gui2 = new CopyOfMainMenu();
gui2.mainPanel();
}
public void thepanel () throws IOException {
// GridBagLayout/Constraint
GridBagConstraints gridbagc = new GridBagConstraints();
gbc.insets = new Insets(15, 15, 15, 15);
JFrame frame = new JFrame();
JPanel panel = new JPanel(new GridBagLayout());
// Creating JButtons/Icons
panel.add(buttonTwo, gbc); //SCOREBOARD
panel.add(buttonThree, gbc); //INSTRUCTIONS
// JButton size's
button.setPreferredSize(new Dimension(400, 35))
buttonTwo.setContentAreaFilled(false);
buttonThree.setBorder(BorderFactory.createEmptyBorder());
buttonThree.setContentAreaFilled(false);
}
}
再次感谢您的任何帮助。
答案 0 :(得分:3)
您永远不会在任何地方添加面板(如果您这样做,它会在图像上绘制)。但是,可以使用JLabel
作为容器:
JComponent panel = new JLabel(new ImageIcon(ImageIO.read(new File("res/FinalBG.png"))));
panel.setLayout(new GridBagLayout());
...
// continue adding the components as before
...
frame.add(panel);
(或将标签设置为内容窗格,也可以正常工作)。
答案 1 :(得分:1)
在JFrame中,覆盖paint方法并使用Graphics对象绘制图像:
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(image, width, height, null);
}