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));
}
}
目前只总结了这些,希望大家添加更多的组件。
或者提供更好的方法。