Swing 如何让按钮自适应窗口大小

在这里插入代码片
package My;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Swing0722 {

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

class Window{
	JFrame frame;
	JButton btn;
	
	Window(){
	
		frame = new JFrame();//建一个窗口
		frame.setSize(414, 337);//窗口大小,宽:414,高:337
		frame.setLayout(new Layout());//Layout类是Window类里内部类,实现了LayoutManager接口,也就是我自己定义自己的布局管理器,
		//setLayout()函数需要一个LayoutManager做参数
		//setLayout()函数原型如下:
		// public void setLayout(LayoutManager manager) {
        // if(isRootPaneCheckingEnabled()) {
        //    getContentPane().setLayout(manager);
        // }
        // else {
        //    super.setLayout(manager);
        // }
   		// }		    
		btn = new JButton("here");//创建一个按钮
		frame.add(btn);//将按钮添加进窗口
		
		frame.setVisible(true);//让窗口显示
		frame.setLocationRelativeTo(null);//设置窗口居于屏幕中间显示
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	class Layout implements LayoutManager{//控件自适应窗口大小,需要实现layoutManager接口

		@Override
		public void addLayoutComponent(String name, Component comp) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void removeLayoutComponent(Component comp) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public Dimension preferredLayoutSize(Container parent) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public Dimension minimumLayoutSize(Container parent) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public void layoutContainer(Container parent) {
			// TODO Auto-generated method stub
		
				int w = parent.getWidth();//parent.getWidth()是在拉伸窗口时获得窗口的宽
				int h = parent.getHeight();//parent.getHeight()是在拉伸窗口是获得窗口的高
				double x = w*(10.0/400);//10代表按钮的x=10
				double y = h*(10.0/300);//10代表按钮的y=10
				double btnw = 61.0/400*w;//61代表按钮的宽=61
				double btnh = 28.0/300*h;//28代表按钮的高=28
				//上面四行代码用下面一张图片解释
						
				btn.setBounds((int)x, (int)y, (int)btnw, (int)btnh);
				
			
			
		}
		
	}
	
	
}

在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值