this.jPanel1.getGraphics().setColor(new Color(255,255,255));
    System.out.println(this.jPanel1.getGraphics().getColor());
为什么还是输出为0 0 0

解决方案 »

  1.   

    你就随便搞个jPanel写上面的代码就发现问题了
      

  2.   

    太伤心了 都问了几天了都没几个回答
    Graphics 为什么都设置了颜色都画不出颜色出来呀怎么都是黑色在JPanel JLabel  JButton 都是这样子
    为什么没人回答我呀非常急呀  两天后要交项目了 我主要是做统计的
      

  3.   

    要是设置panel的颜色,可以用setBackground(new Color(255, 255, 255));
      

  4.   

    你getGraphics 得到的只是个副本System.err.println(panel.getGraphics() == panel.getGraphics());
      

  5.   


    package untitled3;import java.awt.BorderLayout;
    import java.awt.Dimension;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.*;
    import javax.swing.JButton;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2008</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class Frame1 extends JFrame {
        JPanel contentPane;
        BorderLayout borderLayout1 = new BorderLayout();
        JPanel jPanel1 = new JPanel();
        JPanel jPanel2 = new JPanel();
        JButton jButton1 = new JButton();    public Frame1() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(borderLayout1);
            setSize(new Dimension(400, 300));
            setTitle("Frame Title");
            jPanel1.setPreferredSize(new Dimension(10, 50));
            jButton1.setText("jButton1");
            jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
            contentPane.add(jPanel1, java.awt.BorderLayout.SOUTH);
            jPanel1.add(jButton1);
            contentPane.add(jPanel2, java.awt.BorderLayout.CENTER);
        }    public void setColorAndDrawGraphics(Graphics g) {
            g.setColor(Color.WHITE); //可以改变颜色,因为是引用传参
            g.drawLine(0, 0, 100, 100); //颜色有改变
        }    public void jButton1_actionPerformed(ActionEvent e) {
            setColorAndDrawGraphics(jPanel2.getGraphics());
            //    jPanel2.getGraphics().setColor(Color.WHITE);//改变了也没改变(因为是副本)
            jPanel2.getGraphics().drawLine(100, 100, 200, 200); //颜色无改变
        }
    }
    class Frame1_jButton1_actionAdapter implements ActionListener {
        private Frame1 adaptee;
        Frame1_jButton1_actionAdapter(Frame1 adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jButton1_actionPerformed(e);
        }
    }
    可以了,谢谢您的提醒,让我琢磨了,原来是逻辑问题,让我更了解Java了,哈哈 这问题搞了我好久时间!