如何在改變幀大小之後更改代碼,幀上其他對象的大小是否也會以相同的比例改變?綁定幀大小及其對象大小
package application;
import javax.swing.*;
import java.awt.*;
public class Program extends JFrame {
private GroupLayout layout;
private GroupLayout.Group groupX;
private GroupLayout.Group groupY;
public Program() {
initialize();
}
private void initialize() {
this.layout = new GroupLayout(this.getContentPane());
this.groupX = this.layout.createParallelGroup(GroupLayout.Alignment.LEADING);
this.groupY = this.layout.createParallelGroup(GroupLayout.Alignment.LEADING);
}
public void addComponent(Component component, int x, int y) {
getContentPane().setLayout(layout);
groupX.addGroup(layout.createSequentialGroup()
.addGap(x, x, x)
.addComponent(component, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE));
groupY.addGroup(layout.createSequentialGroup()
.addGap(y, y, y)
.addComponent(component, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE));
layout.setHorizontalGroup(groupX);
layout.setVerticalGroup(groupY);
}
public static void main(String[] args) {
Program jf = new Program();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setBounds(new Rectangle(0, 0, 250, 100));
JButton p = new JButton("Click!!");
jf.addComponent(p, 86, 20);
jf.setVisible(true);
}
}
如何更改下面的代碼,改變幀大小後,幀上其他對象的大小也會以相同的比例改變?
如果我理解正確,你想放大用戶界面?如果是這樣,那就不支持(並且與LayoutManager的任務無關)。你必須自己實施它,f.i.使用JLayer(jdk7)或JXLayer(jdk6) – kleopatra 2013-04-04 08:52:56
不。我不想放大UI。我想實現類似於C#中的錨點,這意味着如果我改變框架的寬度,它的對象的寬度也會改變。 – user2049371 2013-04-04 09:36:50
好的,謝謝澄清(但請注意,您的圖像是誤導性的,因爲字體大小隨着按鈕尺寸的增大而增加,除非您放大縮小時纔會發生) – kleopatra 2013-04-04 09:42:15