【发布时间】:2015-07-21 06:45:38
【问题描述】:
我有以下:
public class Frame {
public static void main(String[] args) {
JFrame frame = new JFrame("Frame Demo");
Panel panel = new Panel();
frame.add(panel);
frame.setBounds(250,100,800,500);
frame.setVisible(true);
}
}
public class Panel extends JPanel {
JButton singlePlayerButton;
JButton multiPlayerButton;
BufferedImage image;
Gui gui;
public Panel() {
gui = new Gui();
add(gui);
try {
image = ImageIO.read(new File("C:\\Users\\void\\workspace\\BattleShips\\src\\Testumgebung\\background\\battleship_main.jpg"));
} catch (IOException e) {
e.getMessage();
e.printStackTrace();
}
}
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), null);
}
JLabel text;
JPanel mainMenuPanel;
private class Gui extends JPanel {
public Gui() {
setVisible(true);
setSize(500, 300);
setLayout(null);
mainMenuPanel = new JPanel();
mainMenuPanel.setLayout(null);
mainMenuPanel.setBackground(Color.BLUE);
mainMenuPanel.setBounds(150, 10, 200, 230);
add(mainMenuPanel);
mainMenuPanel.setVisible(true);
singlePlayerButton = new JButton("Single Player");
singlePlayerButton.setBounds(100,50 , 150, 40);
singlePlayerButton.setVisible(true);
mainMenuPanel.add(singlePlayerButton);
multiPlayerButton = new JButton("Multi Player");
multiPlayerButton.setBounds(100, 100, 150, 40);
multiPlayerButton.setVisible(true);
mainMenuPanel.add(multiPlayerButton);
repaint();
}
}
}
我只想要一个带有 BackgroundImage 和 Singleplayer 等按钮的 MainMenu。我是否必须设置 Layout 或者是否可以不设置。我刚开始使用 GUI,您可能可以从代码中假设。提前谢谢...
【问题讨论】:
-
首先,确保在进行任何自定义绘画之前调用 super.paintComponent;第二,不要使用空布局;第三次将 GUI 实例添加到 Panel,确保使用 setOpaque(false) 使所有组件透明
标签: java jframe jpanel background-image