swing窗体程序元素随动

        final JFrame frame = this;
        frame.addComponentListener(new ComponentAdapter() {//拖动窗口监听,改变元素的位置和大小
                public void componentResized(ComponentEvent e) {
                    /*
                     * 元素随着窗体改变而改变
                     * 1.先设置窗体的最小宽和高
                     * 2.得到当前窗体的宽和高,设置一下上次窗体的宽和高
                     * 3.设置一个窗体是否动了的标记,因为初始的时候本事件也会被触发,当宽度等于初始宽度的时候才是真正加载到初始状态
                     *   ,初始状态更改窗体大小和直接点击最大化按钮,都是窗体改变了,要把标记设置为true
                     * 4.窗体标记为trued的情况下,去设置:
                     *   a.需要移动的元素
                     *   b.只移动X位置
                     *   c.移动宽度和高度的
                     *   d.移动Y位置和高度的
                     *   e.移动x和y位置的
                     * */


                    int whidth = frame.getWidth();//获取窗口宽度
                    int height = frame.getHeight();//获取窗口高度  你也可以设置高度居中


                    if (whidthMark == 846 && isMove == false) {//先让窗体加载到初始状态
                        isMove = true;
                    }
                    if (frame.getExtendedState() == 6) {//6代表最大化了,0是初始状态
                        isMove = true;
                    }
                    if (isMove) {
                        label1.setBounds(label1.getX() + (whidth - whidthMark), 60, 80, 30);
                        label2.setBounds(label2.getX() + (whidth - whidthMark), 60, 70, 30);
                        label3.setBounds(label3.getX() + (whidth - whidthMark), 60, 70, 30);

                        button1.setBounds(button1.getX() + (whidth - whidthMark), 10, 140, 40);//(起始点x,起始点y,宽地w,高h)  标签设置宽高不明显
                        button2.setBounds(button2.getX() + (whidth - whidthMark), 10, 85, 40);//(起始点x,起始点y,宽地w,高h)


                        scrollPane2.setBounds(15, 100, scrollPane2.getWidth() + (whidth - whidthMark), scrollPane2.getHeight() + (height - heightMark));
                        scrollPane2.setViewportView(textArea1);
                        scrollPane3.setBounds(15, scrollPane3.getY() + (height - heightMark), scrollPane3.getWidth() + (whidth - whidthMark), 45);
                        scrollPane3.setViewportView(textArea2);
                        button4.setBounds(button4.getX() + (whidth - whidthMark), button4.getY() + (height - heightMark), 90, 45);
                    }


                    whidthMark = whidth;
                    heightMark = height;

                }

        });
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值