QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
28
查看: 138|回复: 1

为什么内层的paint函数只执行了一次?

[复制链接]
最佳答案
0 
累计签到:1 天
连续签到:1 天
Mr.Rothbart 发表于 2018-5-11 18:04:00 1381 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Rectangle里面的Paint函数只执行了一次.求原因
第一张图是要实现的GUI界面,第二张是输出(只有一行0000说明paint只执行了一次),第三张是运行结果的GUI
附代码:
package Homework3;
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class Homework3_2 {
        public static class newWindow extends JFrame
        {     //定义一个类继承JFrame类
            private int data[][];
            private int r[];
            private Graphics[] R;
            public newWindow(String title,int data[][]) {   
                int wH,wW;
                wH=350;
                wW=600;
                Color color[]={Color.BLACK,Color.BLUE,Color.GRAY};
                JFrame window = this;    //实例化一个JFrame对象
                for(int i=0;i<6;i++)
                {
                    JLabel a=new JLabel(50*i+"   "+"--------------------------------------------------------------------------------------------------------------");
                    a.setBounds(10, wH-(i*50+75), wW, 10);
                    a.setVisible(true);
                    window.add(a);   
                }
                for(int i=0;i<4;i++)
                {
                    JLabel b=new JLabel("商品"+(i+1));
                    b.setBounds(70+100*i, wH-65, 100, 20);
                    window.add(b);
                    for(int j=0;j<3;j++)
                    {
                            Rectangle rt= null;
                        int h=data[j][i];
                        int rect[]={100*i+33*j,wH-h-70,33,h};
                        System.out.println(Arrays.toString(rect));
                        rt=new Rectangle(rect,color[j]);
                        window.add(rt);
                        rt.paintImmediately(rect[0], rect[1], rect[2], rect[3]);
                    }
                }
                window.setVisible(true);    //使窗体可视
                window.setSize(600, 350);   //设置窗口大小
                window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //设置窗口关闭方式
            }
        }
        static class Rectangle extends JPanel{
                private static final long serialVersionUID = 1L;
                private int r[];
            private Color color;
            public Rectangle(int rect[],Color c)
            {
                this.r=rect;
                this.color =c;
                this.setVisible(true);
            }
            public void paint(Graphics g)
            {
                g.setColor(this.color);
                g.fillRect(this.r[0],this.r[1],this.r[2],this.r[3]);
                System.out.println("0000000");
            }
        }
        public static void main(String[] args) {
            int data[][]={{30,50,30,100},{110,120,130,140},{110,120,130,140}};
            new newWindow("111",data);
        }
}
95)R_KU7_UZV%5OV1HFP9RI.png
%]QS9$BCE)3JAQKH_YW4[HI.png
Q`HB~5Q2SF)7@PJ@ENAJ]5L.png
楼层
跳转到指定楼层
最佳答案
0 
累计签到:1 天
连续签到:1 天
Mr.Rothbart  楼主| 发表于 2018-5-11 18:22:42 | 显示全部楼层
有大佬能解答下不

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-5-24 06:32

快速回复 返回顶部 返回列表