我想自定义一个界面,一个JFrame 上级放了一个 MyJPanel,MyJPanel 继承自JPanel ,我在MyJPanel上绘制的Image ,在程序起动时为什么不能显示,必需拖动一下窗口,图片才会出现,我想应该是绘制顺序的问题,不知道应该怎么解决?(必需使用MyJPanel 来绘制).

解决方案 »

  1.   

    没有代码,不知道你的问题在哪里,下面是我写的测试类,基本按照你所说的MyPanel类继承了JPanel,在MyPanel中画图。
    import java.awt.*;
    import javax.swing.*;public class Test {
    private JFrame frame = null;
    private MyPanel pane = null;
    private ImageIcon image = null; public Test() {
    frame = new JFrame("Test");
    image = new ImageIcon("photo.jpg");
    pane = new MyPanel(image.getImage());

    frame.getContentPane().add(pane, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 200);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true); }

    public static void main(String args[]) {
    new Test();
    }}class MyPanel extends JPanel{ private static final long serialVersionUID = -751946168238375024L;

    private Image image = null;

    MyPanel(Image image){
    this.image = image;
    }

    public void paint(Graphics g){
    super.paint(g);
    g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
    }

    }