public class AddMult extends JFrame {
public AddMult() {
setSize(600, 600);
txtEnterNum = new JTextField();
txtEnterNum.setSize(100,50);
lblEnterNum.setLocation(100, 150);
add(txtEnterNum);
txtEnterNum.setVisible(true);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
我尝试在其上创建一个表单和一个JTextField。但问题是,我的位置和大小不起作用。 TextField正在填写整个表单。我该如何解决?
由于JFrame中的默认布局(FlowLayout),大小不“正常”。此布局不允许您更改任何对象的大小或位置。尝试使用您自己的布局(修改x和y值以修改组件的大小和位置):
setLayout(new LayoutManager() {
@Override
public void addLayoutComponent(String name, Component comp) {
}
@Override
public void removeLayoutComponent(Component comp) {
}
@Override
public Dimension preferredLayoutSize(Container parent) {
return null;
}
@Override
public Dimension minimumLayoutSize(Container parent) {
return null;
}
@Override
public void layoutContainer(Container parent) {
public void layoutContainer(Container parent) {
float modifierx = Toolkit.getDefaultToolkit().getScreenSize().width/100;
float Sizemodifier = Toolkit.getDefaultToolkit().getScreenSize().height/50;
float modifiery = Toolkit.getDefaultToolkit().getScreenSize().height/150;
int x=(int)(Toolkit.getDefaultToolkit().getScreenSize().width/modifierx);
int y=(int)(Toolkit.getDefaultToolkit().getScreenSize().height/modifiery);
int height =(int)(Toolkit.getDefaultToolkit().getScreenSize().height/Sizemodifier);
int DX =(int)(Toolkit.getDefaultToolkit().getScreenSize().width/modifierx);
int DY =(int)(Toolkit.getDefaultToolkit().getScreenSize().height/modifiery);
for(int i = 0; i<parent.getComponentCount();i++){
if(i%2==0){
parent.getComponent(i).setBounds(x,y,x,height);
x+= DX;
}else{
parent.getComponent(i).setBounds(x,y,x,height);
x=Toolkit.getDefaultToolkit().getScreenSize().width/100;
y+=DY;
}
}
}
});
您必须在JFrame的构造函数中设置布局:
frame() {
setSize(600, 600);
setLayout(new LayoutManager() {...}
txtEnterNum = new JTextField();
txtEnterNum.setSize(100, 50);
setLocation(100, 150);
add(txtEnterNum);
txtEnterNum.setVisible(true);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}