鱼C论坛

 找回密码
 立即注册
查看: 2828|回复: 1

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

[复制链接]
发表于 2018-5-11 18:04:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-11 18:22:42 | 显示全部楼层
有大佬能解答下不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 19:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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