我有以下运行良好的代码,但我想知道是否有任何方法可以更改字体大小以填充 JTextBox 中的最大区域。当我在三个不同的主题上运行代码时,它给了我不同的结果。
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import java.awt.GridLayout;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.SwingConstants;
import javax.swing.JPasswordField;
import java.awt.Component;
public class NewLoginBox extends JDialog {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private final JPanel contentPanel = new JPanel();
    private JTextField userID;
    private JPasswordField passwordField;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        try {
            NewLoginBox dialog = new NewLoginBox();
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * Create the dialog.
     */
    public NewLoginBox() {
        setBounds(100, 100, 350, 220);
        getContentPane().setLayout(new BorderLayout());
        contentPanel.setBorder(new TitledBorder(null, "Sign In", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
        {
            JPanel titlePanel = new JPanel();
            contentPanel.add(titlePanel);
            titlePanel.setLayout(new BoxLayout(titlePanel, BoxLayout.Y_AXIS));
            {
                JLabel lblPleaseEnterYour = new JLabel("Welcome to Application. Please Sign In ");
                lblPleaseEnterYour.setAlignmentX(Component.CENTER_ALIGNMENT);
                lblPleaseEnterYour.setAlignmentY(Component.BOTTOM_ALIGNMENT);
                lblPleaseEnterYour.setHorizontalAlignment(SwingConstants.LEFT);
                titlePanel.add(lblPleaseEnterYour);
                titlePanel.add(Box.createVerticalStrut(15));
            }
        }
        {
            JPanel formPanel = new JPanel();
            contentPanel.add(formPanel);
            formPanel.setLayout(new GridLayout(0, 2, 5, 5));
            {
                JLabel lblUserId = new JLabel("User ID");
                formPanel.add(lblUserId);
            }
            {
                userID = new JTextField("", 15);
                formPanel.add(userID);
                userID.setColumns(10);
            }
            {
                JLabel lblPassword = new JLabel("Password");
                formPanel.add(lblPassword);
            }
            {
                passwordField = new JPasswordField();
                formPanel.add(passwordField);
            }
        }
        {
            JPanel buttonPane = new JPanel();
            buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
            getContentPane().add(buttonPane, BorderLayout.SOUTH);
            {
                JButton okButton = new JButton("OK");
                okButton.setActionCommand("OK");
                buttonPane.add(okButton);
                getRootPane().setDefaultButton(okButton);
            }
            {
                JButton cancelButton = new JButton("Cancel");
                cancelButton.setActionCommand("Cancel");
                buttonPane.add(cancelButton);
            }
            {
                JButton btnHelp = new JButton("Help");
                buttonPane.add(btnHelp);
            }
        }
    }
}
- 这是最好的外观和感觉。


现在我想要 Jtextbox 的大小应该根据里面的文本动态改变。这样我们就可以拥有一致的外观和感觉。
谢谢 Ashish Tyagi