I have found an odd way of putting a picture in an applet just by itself, but it doesn't seem to work when i put the code in the buttonListener for the picture to show when a button is pressed. If you could also give me the simplest code for putting a picture in an applet, it would be very much appreciated!
the code that works:
import java.awt.*;
import java.applet.*;
import javax.swing.*;
public class gamedone extends 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
}
class DrawingPanel extends JPanel
{
Image img;
DrawingPanel (Image img)
{ this.img = img; }
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, 开发者_Python百科this);
}
}
but when this is the program i added it to, and the button doesn't make it work:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
public class TypeInNames extends 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();
}
}
}
}
Not sure about this but you could try the following:
You should call
setBounds()on yourdrawing_panelimages load asynchronously; you may want to use an
ImageObserverto know when it has loaded, thenrepaint. You could override yourDrawingPanel.imageUpdate()method.is the tree being updated? you may need to call
getContentPane().invalidate()after adding the component.
加载中,请稍侯......
精彩评论