Java 将框架大小与其对象大小绑定
如何更改下面的代码在更改帧大小后,帧上其他对象的大小也会以相同的比率更改Java 将框架大小与其对象大小绑定,java,swing,resize,jframe,Java,Swing,Resize,Jframe,如何更改下面的代码在更改帧大小后,帧上其他对象的大小也会以相同的比率更改 package application; import javax.swing.*; import java.awt.*; public class Program extends JFrame { private GroupLayout layout; private GroupLayout.Group groupX; private GroupLayout.Group groupY;
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);
}
}
如何更改下面的代码在更改帧大小后,帧上其他对象的大小也会以相同的比率更改
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);
}
}
我想说,我不喜欢
GroupLayout
,但那只是我:d
jButton1 = new javax.swing.JButton();
jButton1.setText("jButton1");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(152, 152, 152)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 143, Short.MAX_VALUE)
.addGap(175, 175, 175))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(137, 137, 137)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(94, 94, 94))
);
如果我理解正确,您想缩放ui吗?如果是这样的话,这是不受支持的(与LayoutManager的任务无关)。你必须自己实现它,f.i.使用JLayer(jdk7)或JXLayer(jdk6)不。我不想缩放用户界面。我想实现一些类似于C#中的锚定的东西,这意味着如果我更改帧的宽度,其对象的宽度也会更改。好的,感谢您的澄清(但请注意,您的图像是误导性的,因为字体大小会随着按钮大小而增加,这在缩放时不会发生)只需修改代码以获取x/y和宽度/高度值,我也不喜欢GroupLayout me-但是,它是为在构建器中使用而设计的,不是为手动编码,因此它在传达后者方面做得很好:-)