我差不多完成了我的hangman java代码。我想在后台添加一张图片。(nightsky.png)如何在绘图图形方法中执行此操作?我在开始时创建了一个imageicon。
public HangmanRevised() {
setSize(600,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
ImageIcon background = new ImageIcon("nightsky.png");
Letter = new TextField();
JLabel label = new JLabel("pick a Letter");
button = new Button("Enter");
add(label);
add(button);
add(Letter);
button.addActionListener(this);
createGame();
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(background, 0, 156, Color.green, button);
}
答案 0 :(得分:1)
如果您以实际尺寸绘制图像,则无需进行任何自定义绘画。
正如已经建议的那样,您只需将Icon添加到JLabel并将标签添加到框架(或面板)中。然后,如果您希望图像显示在标签内的证书位置,那么您只需将一个EmptyBorder添加到标签中。
答案 1 :(得分:0)
您需要将背景放在某处,即:
//add the following in the HangmanRevised() constructor (?)
button.addActionListener(this);
//To add
ImagePanel panel = new ImagePanel(background.getImage());
JFrame frame = new JFrame();
frame.getContentPane().add(panel);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
add(frame);
//end...
createGame();
答案 2 :(得分:0)
通过覆盖JPanel,您可以重做paintComponent()来绘制图像,JPanel本身应该为其子项设置绘图功能(虽然我没有测试过这个功能)。
http://www.java2s.com/Code/Java/Swing-JFC/Panelwithbackgroundimage.htm
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ImageTest {
public static void main(String[] args) {
ImagePanel panel = new ImagePanel(new ImageIcon("images/background.png").getImage());
JFrame frame = new JFrame();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
class ImagePanel extends JPanel {
private Image img;
public ImagePanel(String img) {
this(new ImageIcon(img).getImage());
}
public ImagePanel(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
答案 3 :(得分:0)
您还可以2D Graphics
中的建议使用RotatableImage
构建您喜欢的任何动态图片。