I have following code which is running fine, but I want to know if there is any method which can change the font size to fill maximum area in JTextBox. When I am running to code on three different theme it is giving me different results.
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);
}
}
}
}
– which is have best look and feel.


Now what I want that the size of Jtextbox should be dynamically change according to the text inside it. so that we can have consistent look and feel.
Thanks
Ashish Tyagi
pack()on your top level windows after filling them with components and before displaying them.For example,
NewLoginBox.java: