java禁止放大_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));

}

}

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

或者提供更好的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值