Я хочу создать 3 JTextFields в строке со всеми равными размерами. Но мое первое текстовое поле становится таким большим, чем два других.
После добавления каждого компонента за раз и выяснения причин проблемы я понял, что если я наберу длинный текст для JLabel, когда возникает эта проблема. Если я уменьшу длину текста в JLabel JTextFields, вы получите размеры I want.Here мой кодИзменения размера JTextField с длиной текста JLabel
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;
public class Calculator1 extends JFrame {
JTextField value1=new JTextField("0");
JTextField value2=new JTextField("0");
JTextField value3=new JTextField("0");
JLabel label1=new JLabel("Label1 size of JTextfields chnge with Label length");
JTextField value4=new JTextField("0");
JTextField value5=new JTextField("0");
JTextField value6=new JTextField("0");
JLabel label2=new JLabel("Label2");
JLabel label3=new JLabel("Label3");
JTextField value7=new JTextField("0");
public Calculator1(){
super("Calculator");
setSize(500,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel=new JPanel();
GridBagLayout bag=new GridBagLayout();
getContentPane().add(panel);
panel.setLayout(bag);
GridBagConstraints c=new GridBagConstraints();
c.insets=new Insets(5,5,5,5);
c.fill=GridBagConstraints.HORIZONTAL;
c.gridx=0;
c.gridy=0;
c.weightx=0.0;
c.weighty=0.5;
c.gridwidth=1;
panel.add(label1,c);
c.gridx=0;
c.gridy=1;
c.gridwidth=5;
c.weightx=0.5;
c.weighty=0.5;
panel.add(value1,c);
c.gridx=5;
c.gridy=1;
panel.add(value2,c);
c.gridx=10;
c.gridy=1;
panel.add(value3,c);
c.gridwidth=1;
c.weightx=0.0;
c.weighty=0.5;
c.gridx=0;
c.gridy=3;
panel.add(label2,c);
c.gridwidth=5;
c.weightx=0.5;
c.weighty=0.5;
c.gridx=0;
c.gridy=4;
c.insets=new Insets(5,5,5,5);
panel.add(value4,c);
c.gridx=5;
c.gridy=4;
panel.add(value5,c);
c.gridx=10;
c.gridy=4;
panel.add(value6,c);
c.gridwidth=1;
c.weightx=0.0;
c.weighty=0.5;
c.gridx=0;
c.gridy=5;
panel.add(label3,c);
c.gridwidth=5;
c.weightx=0.5;
c.weighty=0.5;
c.gridx=0;
c.gridy=6;
panel.add(value7,c);
setVisible(true);
}
public static void main (String args[]){
Calculator1 cal=new Calculator1();
}
}
Как я могу остановить изменение размера текстовых полей JTextField при изменении JLabel label1 в длину текста
Спасибо за ответ . Он решил проблему. В книге Сэмов говорится, что ширина сетки - это количество ячеек, которые занимает компонент в горизонтальном направлении. Я хотел бы знать, насколько велика ячейка. –
Ячейка размером с размер компонента в ячейке, но никогда не устанавливайте ее вручную, это цель 'LayoutManager'. Кроме того, размеры компонентов, управляемых 'LayoutManager' – alex2410