Die Größe funktioniert aufgrund des Standardlayouts (FlowLayout) in Ihrem JFrame nicht. Mit diesem Layout können Sie die Größe oder Position eines Objekts nicht ändern. Versuchen Sie Ihr eigenes Layout zu verwenden (ändern x und y-Werte, um die Größe und Position Ihrer Komponenten zu ändern):
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;
}
}
}
});
Sie haben das Layout in dem Konstruktor der JFrame setzen:
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);
}
Haben Sie jemals txtEnterNum entfernt, das vorher existiert? –
Die Antwort, die derzeit akzeptiert wird, ist die vollständige falsche Methode zum Dimensionieren und Positionieren des Textfelds. Ich (und viele andere) kann Ihnen den richtigen Rat dafür geben, aber zuerst müssen wir wissen, wie die gesamte GUI (zusammen mit irgendwelchen anderen Komponenten und Labels usw.) ** erscheinen soll. Stellen Sie ASCII-Grafiken oder eine einfache Zeichnung des * beabsichtigten * Layouts der GUI in minimaler Größe und wenn sie in der Größe veränderbar ist, mit mehr Breite und Höhe zur Verfügung, um zu zeigen, wie der zusätzliche Platz verwendet werden sollte. –
BTW 1) Eine Höhe von 50 ist viel höher als ein Textfeld würde normalerweise erscheinen, es sei denn, es hat eine große Schrift. 2) 'txtEnterNum' Der 'enter num'-Teil dieses Namens legt nahe, dass ein' JSpinner' mit einem 'SpinnerNumberModel' ein besserer Programmieransatz und auch einfacher für den Benutzer ist. –