我对三个文本框设置都为6,为什么长度不一样?


import java.awt.Dimension;


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class Observable {
    JTextField txtBase,txtHeight,txtHypo;
    void Window()
    {
        
        
        JFrame jf = new JFrame("Right Triangle");
        jf.setSize(1000,600);
        jf.setLocationRelativeTo(null);
        jf.setResizable(false);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        
        JPanel panel = new JPanel();
        jf.getContentPane();
        
        // base
        txtBase = new JTextField(6);
        JLabel labelBase = new JLabel("Base");
        Dimension size = labelBase.getPreferredSize();
        labelBase.setBounds(150,100,size.width,size.height);
        txtBase.setBounds(190,100,size.width,size.height);
        
        
        //height
        txtHeight = new JTextField(6);
        JLabel labelHeight = new JLabel("Height");
        Dimension size1 = labelHeight.getPreferredSize();
        labelHeight.setBounds(400,100,size1.width,size1.height);
        txtHeight.setBounds(440,100,size1.width,size1.height);
        
        
        //hypotenuse
        txtHypo = new JTextField(6);
        JLabel labelHypo = new JLabel("Hypotenuse");
        Dimension size2 = labelHypo.getPreferredSize();
        labelHypo.setBounds(650,100,size2.width,size2.height);
        txtHypo.setBounds(740,100,size2.width,size2.height);
        
    
        
        
        panel.setLayout(null);
        panel.add(labelHeight);
        panel.add(labelBase);
        panel.add(labelHypo);
        panel.add(txtBase);
        panel.add(txtHeight);
        panel.add(txtHypo);
        
        
        jf.add(panel);
    
        
        //show window
        jf.setVisible(true);
    }
    
    

}


img

大兄弟:你这自己设置宽高呀!你的标签字符长度就是你的文本框长度。

txtBase = new JTextField(6);
JLabel labelBase = new JLabel("Base");
Dimension size = labelBase.getPreferredSize();
//设置文本框的坐标和宽高,你用的是labelBase的宽高,宽就字符的长度
txtBase.setBounds(190,100,size.width,size.height);

import java.awt.Dimension;


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class Observable {
    JTextField txtBase,txtHeight,txtHypo;
    void Window()
    {
        JFrame jf = new JFrame("Right Triangle");
        jf.setSize(1000,600);
        jf.setLocationRelativeTo(null);
        jf.setResizable(false);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        jf.getContentPane();

        // base
        txtBase = new JTextField(6);
        JLabel labelBase = new JLabel("Base");
        Dimension size = txtBase.getPreferredSize();
        labelBase.setBounds(150,100,size.width,size.height);
        txtBase.setBounds(190,100,size.width,size.height);

        //height
        txtHeight = new JTextField(6);
        JLabel labelHeight = new JLabel("Height");
        Dimension size1 = txtBase.getPreferredSize();
        labelHeight.setBounds(400,100,size1.width,size1.height);
        txtHeight.setBounds(440,100,size1.width,size1.height);

        //hypotenuse
        txtHypo = new JTextField(6);
        JLabel labelHypo = new JLabel("Hypotenuse");
        Dimension size2 = txtBase.getPreferredSize();
        labelHypo.setBounds(650,100,size2.width,size2.height);
        txtHypo.setBounds(740,100,size2.width,size2.height);

        panel.setLayout(null);
        panel.add(labelHeight);
        panel.add(labelBase);
        panel.add(labelHypo);
        panel.add(txtBase);
        panel.add(txtHeight);
        panel.add(txtHypo);

        jf.add(panel);
        //show window
        jf.setVisible(true);
    }

    public static void main(String[] args) {
        new Observable().Window();
    }


}

把代码改成这样就可以 了:

img