java吧 关注:1,246,676贴子:12,723,519
  • 5回复贴,共1

为什么这个程序能运行,但是不能显示我设置的颜色。

只看楼主收藏回复

……一楼不知道能不能上代码。


1楼2012-04-19 14:58回复
    import javax.swing.*;
    import java.awt.*;
    public class head {
    private int width;
    private int height;
    private int x;
    private int y;
    private JFrame window;
    private Color color;
    public head(){
    window = new JFrame ("zhang rihui");
    window.setSize(200,200);
    width = 40;
    height = 20;
    x = 80 ;
    y = 90 ;
    color = Color.BLUE ;
    window.setVisible(true);
    }
    public void paint(){
    Graphics g = window.getGraphics();
    g.setColor(color);
    g.fillRect(x,y,width,height);
    window.setVisible(true);
    }
    public static void main(String[] args){
    head r1 = new head();
    head r2 = new head();
    r1.paint();
    r2.paint();
    }
    }
    


    2楼2012-04-19 15:00
    回复
      原来是你,话说Swing GUI 现在用的很少,具某位师傅说过,GUI现在画面差而且效率低下。.net 的界面设计就很好了。你要是以后搞javaee 这些可以不看。


      3楼2012-04-19 15:25
      回复
        难道说 你认识我 ?
        我只想知道我哪里写错了,导致中间的那个矩形没有显示出来?


        4楼2012-04-19 15:27
        回复
          你这种强行获取 Graphics 对象来绘制的方式是不可取的
          正规的做法应当是:重写你需要绘制的窗体中的作为画板的 JPanel 的 paintComponent 方法
          在 paintComponent 中控制绘制的过程,
          为什么呢?
          因为每次窗体发生变化时(如大小变化、位置变化等)、或者手动调用 repaint 方法时
          都会自动调用窗体的 paint 方法,从而再调用到内部各个控件的 paintComponent 方法
          所以你强制拿出 Graphics 对象,在 paintComponent 和 paint 方法之外进行绘制也没有用
          窗体一旦觉得需要刷新,就把你画的东西刷没了
          


          IP属地:江苏5楼2012-04-19 15:48
          回复
            我是群里的魂淡


            6楼2012-04-20 10:11
            回复