按下按钮后如何在applet(java)中添加图片?

时间:2010-09-06 14:51:59

标签: java applet

我发现了一种奇怪的方法,只是将图片单独放入applet中,但是当我将代码放在buttonListener中以便按下按钮时显示图片时,它似乎不起作用。如果您还可以给我一个最简单的代码来将图片放入applet中,我们将非常感激!

有效的代码: import java.awt。; import java.applet。; import javax.swing。*;

公共类gamedone扩展了JApplet {

public void init() {

    Container cp = getContentPane();
    cp.setBackground(Color.black);

    Container content_pane = getContentPane();

    Image img = getImage(getCodeBase(), "portal-cake.jpg");

    DrawingPanel drawing_panel =  new DrawingPanel(img);

    // Add the DrawingPanel to the content pane.
    content_pane.add(drawing_panel);
  } // init

}     类DrawingPanel扩展了JPanel     {       图片img;

  DrawingPanel (Image img)
  { this.img = img; }

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

    g.drawImage(img, 0, 0, this);

    }

}

但是当这是我添加它的程序时,按钮不能使它工作:

import java.awt。; import java.applet。; import java.awt.event。; import javax.swing。;

公共类TypeInNames扩展了JApplet {

 JButton StartButton;
 JTextField name1, name2;
 String player1, player2;
 String reply;


 Container cp = getContentPane();

 public void init() 
 {

    setSize(350, 400);
    setLayout(null);

    cp.setBackground(Color.black);

    StartButton = new JButton("Start Game!");
    name1 = new JTextField("Player 1",35);
    name2 = new JTextField("Player 2",35);
    //(x, y, width, height);
    StartButton.setBounds(115,200,120,30);
    name1.setBounds(115,140,120,20);
    name2.setBounds(115,170,120,20);


    startGame();
 }

 public void startGame()
 {
    add(StartButton);
    add(name1);
    add(name2);


    StartButton.addActionListener(new ButtonListener());
 }

 public void game()
 {

 }

 public void endGame()
 {

    Container cp = getContentPane();
    cp.setBackground(Color.black);

    Container content_pane = getContentPane();

    Image img = getImage(getCodeBase(), "portal-cake.jpg");

    DrawingPanel drawing_panel =  new DrawingPanel(img);

    // Add the DrawingPanel to the content pane.
    content_pane.add(drawing_panel);
 }

 private class ButtonListener implements ActionListener{

     public void actionPerformed(ActionEvent event)
     {
        if (event.getSource() == StartButton)
        {
            player1 = name1.getText();
            player2 = name2.getText();
            remove(StartButton);
            remove(name1);
            remove(name2);

            endGame();
            repaint();
        }
     }

 }



}

1 个答案:

答案 0 :(得分:0)

不确定,但您可以尝试以下方法:

  1. 您应该在setBounds()

  2. 上致电drawing_panel
  3. 图片异步加载;您可能希望使用ImageObserver知道何时加载,然后repaint。您可以覆盖DrawingPanel.imageUpdate()方法。

  4. 树正在更新?添加组件后,您可能需要致电getContentPane().invalidate()