java 所有组件缩放、放大

public class TestResize{
    public static void main(String args[]){
        JFrame jf=new JFrame("test");
        jf.setBounds(100,100,200,300);
        JPanel jp=new JPanel();
        jp.setLayout(null);   //此处为关键点,不能有任何布局管理器
        JButton btn=new JButton("开始");
        btn.setBounds(100, 100, 100, 50);
        jp.add(btn);
        
        JLabel label=new JLabel("daicy");
        label.setBounds(5, 5, 100, 50);
        label.setBorder(BorderFactory.createLineBorder(Color.red, 3));
        jp.add(label);
        
        jf.add(jp);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        ComponentResize.reSetSize(jf);
    }
}


import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.ImageObserver;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;

public class ComponentResize {
     
     public static double PERCENT = 0.5;
     
     
     public static int getRealValue(int value){
    	 return (int) (value * PERCENT);
     }
     
     public static Rectangle getRealValue(Rectangle value){
    	 value.x = (int) (value.x * PERCENT);
    	 value.y = (int) (value.y * PERCENT);
    	 value.height = (int) (value.height * PERCENT);
    	 value.width = (int) (value.width * PERCENT);
    	 return value;
     }
     
     public static Rectangle getRealValue(int x, int y, int width, int height) {
    	 Rectangle rectangle = new Rectangle();
    	 rectangle.x = (int) (x * PERCENT);
    	 rectangle.y = (int) (y * PERCENT);
    	 rectangle.height = (int) (height * PERCENT);
    	 rectangle.width = (int) (width * PERCENT);
    	 return rectangle;
     }
     
     public static void reSetSize(Container container){
    	 container.setBounds(ComponentResize.getRealValue(container.getBounds()));
    	 Component[] components = container.getComponents();
    	 for (int i = 0; i < components.length; i++) {
    		 if(components[i] instanceof  JComponent){
    			 reSetSizeFont((JComponent) components[i]);
    		 }
    		 
    		 if (components[i] instanceof JLabel){
    			 reSetSizeJLabel((JLabel)components[i]);
    		 }else if (components[i] instanceof Container){
    			 reSetSize((Container)components[i]);
    		 }else  if (components[i] instanceof Component){
    			 components[i].setBounds(ComponentResize.getRealValue(components[i].getBounds()));
    		 }
		}
     }
     
     public static void reSetSizeFont(JComponent jComponent){
    	 jComponent.setFont(reSetSizeFont(jComponent.getFont()));
     }
     
     public static void reSetSizeJLabel(JLabel jLabel){
    	 reSetSize(jLabel);
    	 if(jLabel.getIcon() instanceof ImageIcon){
    		 ImageIcon icon = (ImageIcon) jLabel.getIcon();
    		 Image image = icon.getImage();
    		 icon.setImage(reSetSizeImage(image,icon.getImageObserver()));
    	 }
     }

     public static Image reSetSizeImage(Image image,ImageObserver obs){
    	 return image = image.getScaledInstance(
				 (int)(image.getWidth(obs)*PERCENT), (int)(image.getHeight(obs)*PERCENT), Image.SCALE_DEFAULT);
     }
     
     public static Font reSetSizeFont(Font defaultfont){
    	 return  new Font(defaultfont.getName(),defaultfont.getStyle(),(int)(defaultfont.getSize()*PERCENT));
     }
     
     
}

目前只总结了这些,希望大家添加更多的组件。

或者提供更好的方法。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java码界探秘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值