Java Swing设置背景和按钮
我正试图让一个图形用户界面有一个背景和一些按钮,应该在背景图片的前面
我目前的问题是将这两个因素结合在一起,因为Java总是同时产生错误代码
“frame.setContentPane(新JPanel(){”
代码中的节
公共类绝对布局演示{
/**
* @param args
*/
public static void addComponentsToPane(Container pane) {
pane.setLayout(null);
JButton b1 = new JButton("one");
JButton b2 = new JButton("two");
JButton b3 = new JButton("three");
pane.add(b1);
pane.add(b2);
pane.add(b3);
Insets insets = pane.getInsets();
Dimension size = b1.getPreferredSize();
b1.setBounds(25 + insets.left, 5 + insets.top,
size.width, size.height);
size = b2.getPreferredSize();
b2.setBounds(55 + insets.left, 40 + insets.top,
size.width, size.height);
size = b3.getPreferredSize();
b3.setBounds(150 + insets.left, 15 + insets.top,
size.width + 50, size.height + 20);
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
* @throws IOException
*/
public static void createAndShowGUI() throws IOException {
//Create and set up the window.
JFrame frame = new JFrame("AbsoluteLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Set up the content pane.
addComponentsToPane(frame.getContentPane());
//Size and display the window.
Insets insets = frame.getInsets();
frame.setSize(600 + insets.left + insets.right,
600 + insets.top + insets.bottom);
frame.setVisible(true);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new JPanel() {
BufferedImage image = ImageIO.read(new File("bilder/background.jpg"));
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, 600, 600, this);
}
});
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
createAndShowGUI();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
我编辑了修改后的代码,现在我可以编译这个项目了,但是不再显示任何图像和按钮
# 1 楼答案
您的代码无法编译,因为您创建的匿名类不正确。您可以使用如下所示的初始化块来解决它
同样,也同样重要。不要使用
null
布局,您可以阅读更多here# 2 楼答案
不能使用这样的内部类:
try {}
应该在一个方法中,而不是直接在类中# 3 楼答案
我现在无法尝试,在不知道哪些是错误的情况下,我猜问题是由您如何构建JPanel引起的
尝试以下方法: