ImageIcon实现了Icon接口,里头有一个公众方法叫getImage可以返回一个Image实例。
graphic在draw的方法中提供了对Image的操作方法,但是对于java控件(这里是JPanel和ImageIcon),api文档说明里头不鼓励直接调用paint,而是使用repaint来迫使控件重画。
在JPanel上直接可以add一个ImageIcon然后显示图片,有没有必要用graphic类再进行一次自己paint?可否进一步说明动机?

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import javax.swing.*;
    class MyFrame extends JFrame{
        private JButton jButton1 = new JButton();
        public void paint(Graphics g){
            super.paint(g);
            ImageIcon icon = new ImageIcon("E:/ITPClient/ITPClient/image/dljm.jpg");
            g.drawImage(icon.getImage(),0,0,getWidth(),getHeight(),this);
        }
        public static void main(String[] args){
            MyFrame f = new MyFrame();
            f.setSize(200,200);        f.addWindowListener(new WindowAdapter()
            {
                public void windowClosing(WindowEvent e) {System.exit(0);}
            });        f.show();
            f.repaint();
        }    public MyFrame() {
            try {
                jbInit();
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }
        private void jbInit() throws Exception {
            jButton1.setBounds(new Rectangle(72, 49, 108, 31));
            jButton1.setText("jButton1");
            this.getContentPane().setLayout(null);
            this.getContentPane().add(jButton1, null);
        }
    }
      

  2.   

    JPanel上可以直接加JLabel组件,
    JLabel上可以直接加上图片。
      

  3.   

    哈哈,不能使用JLabel的.如果是JLabel我早就解决了,不过我的界面布局是BorderLayout.所以不能全用JLabel