日期:2014-05-20  浏览次数:20732 次

缩放panel面版,及组件问题
我现在有一个面版,我想让它缩放,且上面的子组件也跟着变换大小,我做了一个例子,不过只能        
将面版以及它的子组件的UI缩放,而无法将组件真正的缩放,下面是我做的例子,        

package   print;        
import   java.awt.*;        
import   java.awt.event.*;        
import   java.awt.geom.AffineTransform;        
import   java.awt.geom.Line2D;        

import   javax.swing.*;        


public   class   PrintTest2   extends   JFrame   {        
AffineTransform   trans;//用来控制面版缩放的对象;        

public   PrintTest2(){        
setSize(800,   600);        
PanelZzg   panelzzg=new   PanelZzg();        
panelzzg.setPreferredSize(new   Dimension(900,700));        
JScrollPane   jscrollpane=new   JScrollPane(panelzzg);        

add(jscrollpane,BorderLayout.CENTER);        

setVisible(true);        
}        

public   static   void   main(String[]   args){        


PrintTest2   a=new   PrintTest2();        
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        

}        

class   PanelZzg   extends   JPanel{        

JButton   btn;        
JLabel   lab;        
JToggleButton   a;        
AbstractButton   b;        
public   PanelZzg(){        
setLayout(null);        
a=new   JToggleButton( "kdkfj ");        
setBackground(Color.BLUE);        
btn=new   JButton( "可是可靠   可是扩大   ");        
btn.setBounds(120,60,120,60);        
lab=new   JLabel( "skdfjklsdjflsksdfs ");        
lab.setOpaque(true);        
lab.setBounds(200,200,100,100);        
a.setBounds(200,400,100,60);        

add(a);        
add(btn);        
add(lab);        
setSize(800,600);        
trans=new   AffineTransform();        
trans.scale(0.5,   0.5);//设置缩放的陪数;        

setVisible(true);        

}        


public   void   paint(Graphics   g){        
Graphics2D   g2=(Graphics2D)g;        
g2.setTransform(trans);//设置画笔坐标系的缩放        
super.paintComponent(g2);        
super.paintChildren(g2);        

}        


}        

}

------解决方案--------------------
这似乎是比较难的~~
你想,你在Windows里把一个窗口缩小的时候,按钮并不会缩小吧?
最好的方式也许是组件之间的距离随着窗口大小的变化而变化。
------解决方案--------------------