下面是代码 主要看下jButton1MouseClicked()吧import java.awt.*;public class NewJFrame extends javax.swing.JFrame
{
    
    /** Creates new form NewJFrame */
    public NewJFrame()
    {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                          
    private void initComponents()
    {
        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jPanel1.setBackground(new java.awt.Color(204, 255, 255));
        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 250, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 166, Short.MAX_VALUE)
        );        jButton1.setText("jButton1");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter()
        {
            public void mouseClicked(java.awt.event.MouseEvent evt)
            {
                jButton1MouseClicked(evt);
            }
        });        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(69, 69, 69)
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(143, 143, 143)
                        .addComponent(jButton1)))
                .addContainerGap(81, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(34, 34, 34)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(29, 29, 29))
        );
        pack();
    }// </editor-fold>                            private void jButton1MouseClicked(java.awt.event.MouseEvent evt)                                      
    {                                          
        jPanel1.getGraphics().drawLine(0,0,100,100);
        jPanel1.getGraphics().drawString("abc",0,0);
        jPanel1.getGraphics().drawImage(Toolkit.getDefaultToolkit().getImage("img.gif"),0,0,this);
        
    }                                     
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[])
    {
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                new NewJFrame().setVisible(true);
            }
        });
    }
    
    // 变量声明 - 不进行修改                     
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    // 变量声明结束                   
    
}编译运行 点击按钮后 只有 drawLine显示出来了 drawString和drawImage却没有显示
请教下大家这是为什么 怎么改?

解决方案 »

  1.   

    你把字符串位置改成0, 10试试:
    jPanel1.getGraphics().drawString("abc",0,10);图片的方法正确,估计是gif动画不停的刷新,致使你看不到结果,高程jpg图片试试。
      

  2.   

    按你说的弄好了不过还是有点疑问 原来的gif图片不是动画,是静态的。
    而且还要写绝对路径,比如“C:\\img.jpg”(图片我和class文件放一起了)
    还有一点莫名其妙的是 按一次Button后图形图像闪下就没了 按第二次才出了 (不画图片就没问题)