import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;class MyCanvas extends Canvas {
public MyCanvas(JugglerApplet d) { fData = d; setSize(800, 800); } public void paint(Graphics g) { fData.paint(g); } private JugglerApplet fData;
}public class JugglerApplet extends Applet implements ActionListener, ItemListener, Runnable  { private JFrame fFrame;
private MyCanvas fCanvas;
private boolean running;
private JButton fButton;
private Thread fWorkThread;
private Image fImage;
private Choice fChoice;

public void actionPerformed(ActionEvent e)
{ }

public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub

}

public void run() { }

public void init() {
fFrame = new JFrame();
fFrame.setLayout(new BorderLayout());

fCanvas = new MyCanvas(this);
JPanel mp = new JPanel();
mp.add(fCanvas);
fFrame.add(mp, "Center");

JPanel cp = new JPanel();

JComboBox fCombo = new JComboBox();
fCombo.addItem("Beginner");
fCombo.addItem("Expert");
cp.add(fCombo);

fButton = new JButton("start");
cp.add(fButton);

fFrame.add(cp, "South");

fButton.addActionListener(this);
running = false;
fWorkThread = new Thread(this);
fWorkThread.start();

fImage = getImage(getDocumentBase(), "./man.jpg");


}

public void paint(Graphics g) {
if(fImage == null) {
g.drawString("No picture available", 50,50);
return;
}
g.drawImage(fImage, 0, 0, null);
}

public static void main(String[] args) { }}
只显示出来了图片,想在下方显示按钮和下拉菜单,都没出来,请问为何?

解决方案 »

  1.   

    我谈谈我的看法,楼主在init()中新建了一个窗口JFrame,并将按钮和下拉菜单添加进了JFrame,但是并没有用setVisible()方法设置JFrame可见(窗口默认是不可见的)。而图象是画在JugglerApplet中的。很明显楼主就只看见了JugglerApplet中的图,而JFrame中的按钮和下拉菜单是看不见的(因为JFrame窗口没有显示)。如果在init()方法中添加JFrame.setVisible(true),重新运行程序,则会看见2个窗体,一个窗体中只有图象,另一个窗体中只有按钮和下拉菜单。
      

  2.   

    找到问题了,因为默认调用了paint,去掉就正常了