【发布时间】:2014-06-23 03:51:22
【问题描述】:
我正在尝试使用内容窗格 JPanel 创建一个简单的 JFrame。我想知道如何将图像设置为背景。我知道很多人已经问过这个问题,但是每当我尝试时都会遇到未解决的编译错误。 最后,我在课堂上创建了一个全新的课程,但也有错误。 我该怎么做呢?请帮忙。
package menu;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.ImageObserver;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import models.AskTheAdmiralFrame;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
/**
*
* @author Russell
*
*/
public class HistoraskMenu extends JFrame {
private static final long serialVersionUID = 8106152174535131551L;
private static JPanel panel;
private JButton ATA = new JButton("Ask The Admiral");
public Color oldPaper = new Color(255, 230, 179);
private JLabel label = new JLabel();
private final JLabel label_1 = new JLabel("");
private final ImageIcon bg = new ImageIcon("/Users/Russell/Desktop/Russell/Java/Coding"
+ "/eclipse workspace/Historask/resources/bg.jpg");
Image img = bg.getImage();
public HistoraskMenu(){
setBounds(50, 50, 700, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Historask");
panel = new JPanel();
setContentPane(panel);
label.setHorizontalAlignment(SwingConstants.CENTER); //Sets position of Historask sign
label.setVerticalAlignment(SwingConstants.TOP);
label.setBackground(new Color(238, 232, 170)); //Sets the colour of the foreground and background of Historask sign
label.setForeground(oldPaper);
label.setIcon(new ImageIcon("/Users/Russell/Desktop/Russell/Java/Coding"
+ "/eclipse workspace/Historask/resources/title.png"));
label.setOpaque(true);
label.setBounds(50, 10, 500, 50);
getContentPane().add(label);
panel.add(label_1);
ATA.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) { //What happens when you press ATA button
new AskTheAdmiralFrame();
}
});
getContentPane().add(ATA);
setVisible(true);
}
public class panel extends JPanel{
setLayout(new GridLayout(0, 1, 0, 0));
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, this);
super.paintComponents(g);
}
}
【问题讨论】:
-
你遇到了什么错误,在哪一行?
-
在
paintComponent中先调用super,然后绘制图像。 -
-1,这个问题经常被问到。
I know that a lot of people have a already asked this, but I get unresolved compilation errors whenever I try.- 然后修复错误。或者您可以随时搜索另一个示例。您是否查看了此页面右侧的“相关”标题?
标签: java image swing background jpanel