单个jframe上的多个图像和按钮

时间:2013-05-01 18:29:07

标签: java swing awt

我正在用Java设计一个二十一点游戏。

我完成了为游戏编写逻辑,但在设计GUI时遇到了问题。

我有一个功能,每次玩家想要击中时都会生成随机数。

我已经拿到了二十一点桌的图像,并且正在考虑在指定位置显示卡片上的图像。我还想要一个Hit和Stand按钮,再次在二十一点表的图像上。

我所拥有的代码显示了经销商和玩家的初始牌,但问题是每次生成新卡时我都无法想到代码来更新Jframe。按钮也没有显示。这就是我在寻求帮助的地方。我是初学者,使用Jframes,Jpannels等。这就是我所拥有的。

  public class Check extends Panel {
    BufferedImage img;
    BufferedImage img1;
    BufferedImage img2;
    BufferedImage img3;
    BufferedImage img4; 

public Check()
 {

try {
img = ImageIO.read(newFile("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\table.jpg"));

} catch (IOException e) {
}

try {
int n,j;
    n=1 + (int)(Math.random() * ((4 - 1) + 1));
    j=1 + (int)(Math.random() * ((13 - 1) + 1));



 img1 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\"+n+"-"+j+".gif"));

} catch (Exception e) {

}
try {
     int n,j;
    n=1 + (int)(Math.random() * ((4 - 1) + 1));
    j=1 + (int)(Math.random() * ((13 - 1) + 1));

 img2 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\"+n+"-"+j+".gif"));
     } catch (Exception e) {

  }

try {
     int n,j;
    n=1 + (int)(Math.random() * ((4 - 1) + 1));
    j=1 + (int)(Math.random() * ((13 - 1) + 1));

 img3 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\"+n+"-"+j+".gif"));

} catch (Exception e) {

}

try {

 img4 = ImageIO.read(new File("C:\\Users\\Abc\\Documents\\NetBeansProjects\\blackjack\\src\\blackjack\\images\\rear.gif"));
     } catch (Exception e) {

}


}


public void paint(Graphics g) {
g.drawImage( img, 0, 0, this);
g.drawImage(img1, 470, 475, this);
g.drawImage(img2, 510, 475, this);
g.drawImage(img3, 510, 125, this);
g.drawImage(img4, 470, 125, this);


 }

static public void main(String args[]) throws
Exception {
JFrame frame = new JFrame("Display image");
JButton b = new JButton("HIT");
b.setBounds(100,100,110,100);
b.setVisible(true);
Panel panel = new Check();
panel.add(b);
frame.getContentPane().add(panel);
frame.setSize(1024,768);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

1 个答案:

答案 0 :(得分:0)

您应该将super.repaint(g)作为paint方法的第一个语句,以便Button显示Panel

public void paint(Graphics g) {
super.paintComponent(g);
...
}