java控件尺寸自适应(监听窗口尺寸变化事件)

接下来演示java窗口显示在屏幕中间,并且当窗口尺寸改变时自动调整menuBar组件的宽度始终为窗口的宽度。
注意,监听此事件需要导入java.awt.event.ComponentAdapter和java.awt.event.ComponentEvent

package test;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
public class Test {
    private JFrame frame;
    private JMenuBar menuBar;
    private int screenWidth;
    private int screenHeight;
    private int windowWidth = 800;
    private int windowHeight = 500;

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        frame = new JFrame();
        frame.setBounds(0, 0, 1167, 740);

        //自动将窗口放到屏幕正中间
        frame.setBounds(getScreenWidth()/2-frame.getWidth()/2,getScreenHeight()/2-frame.getHeight()/2, windowWidth, windowHeight);
        frame.setVisible(true);

        menuBar = new JMenuBar();
        menuBar.setBounds(0, 0, windowWidth, 21);
        frame.getContentPane().add(menuBar);

        //监听窗口尺寸改变事件
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
            System.out.println("尺寸改变了!");
            menuBar.setSize(frame.getWidth(), 21);
        }
        });

    }

    public int getScreenWidth(){
        screenWidth = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
        return screenWidth;
    }

    public int getScreenHeight(){
        screenHeight = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().height; 
        return screenHeight;
    }
}

发表评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称

抢沙发~