Related
I'm following the previous suggestion of adopting a JList and calling setVisibleRowCount() in my JDialog.
I tried to restrict the number of rows to 2; however the dialog is packed into a big, unscrolled JList. I expected it would show only 2 rows and the rest would be reached through scrolling, leaving space for a future third element in the design (the orders list).
Please take a look at the SSCCE.
TestDialog.java
package testdialog;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class TestDialog {
private static void createAndShowGUI() {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() {
#Override
public void actionPerformed(ActionEvent e) {
new JDViewCustomer(frame, true).setVisible(true);
}
});
frame.getContentPane().add(button, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
CustomerAddress.java
package testdialog;
public class CustomerAddress {
private final String title;
public CustomerAddress(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
}
JDViewCustomer.java
package testdialog;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class JDViewCustomer extends javax.swing.JDialog {
private static final long serialVersionUID = 1L;
private final JPanel jPanelCustomerInfo;
private final JPanel jPanelCustomerAddresses;
private final JPanel jPanelCustomerOrders;
private JTextField txtarea_1;
private JPanel panelNomeDoCliente;
private JPanel panelDadosDoCliente;
private JPanel panelAbaixoDeCustomerAddresses;
private JPanel panelTituloEnderecos;
private JPanel panelContendoOsEnderecos;
private JLabel lblEnderecos;
private JPanel panel;
private JScrollPane scrollPane;
private JList<CustomerAddress> jListCustomerAddresses;
public JDViewCustomer(java.awt.Frame parent, boolean modal) {
super(parent, modal);
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
panel = new JPanel();
getContentPane().add(panel);
/*scrollPane = new JScrollPane(panel);
getContentPane().add(scrollPane);*/
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
jPanelCustomerInfo = new JPanel();
panel.add(jPanelCustomerInfo);
jPanelCustomerInfo.setBackground(new Color(255, 255, 255));
jPanelCustomerInfo.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
jPanelCustomerInfo.setLayout(new BoxLayout(jPanelCustomerInfo, BoxLayout.Y_AXIS));
panelNomeDoCliente = new JPanel();
panelNomeDoCliente.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
panelNomeDoCliente.setBackground(Color.LIGHT_GRAY);
jPanelCustomerInfo.add(panelNomeDoCliente);
GridBagLayout gbl_panelNomeDoCliente = new GridBagLayout();
gbl_panelNomeDoCliente.columnWidths = new int[]{73, 376, 45, 53, 0};
gbl_panelNomeDoCliente.rowHeights = new int[]{31, 0};
gbl_panelNomeDoCliente.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
gbl_panelNomeDoCliente.rowWeights = new double[]{0.0, Double.MIN_VALUE};
panelNomeDoCliente.setLayout(gbl_panelNomeDoCliente);
panelDadosDoCliente = new JPanel();
panelDadosDoCliente.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
panelDadosDoCliente.setBackground(Color.WHITE);
jPanelCustomerInfo.add(panelDadosDoCliente);
GridBagLayout gbl_panelDadosDoCliente = new GridBagLayout();
gbl_panelDadosDoCliente.columnWidths = new int[]{58, 199, 38, 102, 27, 123, 0};
gbl_panelDadosDoCliente.rowHeights = new int[]{0, 14, 0};
gbl_panelDadosDoCliente.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
gbl_panelDadosDoCliente.rowWeights = new double[]{0.0, 0.0, Double.MIN_VALUE};
panelDadosDoCliente.setLayout(gbl_panelDadosDoCliente);
jPanelCustomerAddresses = new JPanel();
scrollPane = new JScrollPane(jPanelCustomerAddresses);
getContentPane().add(scrollPane);
//panel.add(jPanelCustomerAddresses);
jPanelCustomerAddresses.setBackground(new Color(255, 255, 255));
jPanelCustomerAddresses.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
jPanelCustomerAddresses.setLayout(new BoxLayout(jPanelCustomerAddresses, BoxLayout.Y_AXIS));
panelAbaixoDeCustomerAddresses = new JPanel();
panelAbaixoDeCustomerAddresses.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
jPanelCustomerAddresses.add(panelAbaixoDeCustomerAddresses);
panelAbaixoDeCustomerAddresses.setLayout(new BoxLayout(panelAbaixoDeCustomerAddresses, BoxLayout.Y_AXIS));
panelTituloEnderecos = new JPanel();
panelTituloEnderecos.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
FlowLayout fl_panelTituloEnderecos = (FlowLayout) panelTituloEnderecos.getLayout();
fl_panelTituloEnderecos.setAlignment(FlowLayout.LEFT);
panelTituloEnderecos.setBackground(Color.LIGHT_GRAY);
panelAbaixoDeCustomerAddresses.add(panelTituloEnderecos);
lblEnderecos = new JLabel("Endereço");
panelTituloEnderecos.add(lblEnderecos);
panelContendoOsEnderecos = new JPanel();
panelContendoOsEnderecos.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
panelContendoOsEnderecos.setBackground(Color.WHITE);
panelAbaixoDeCustomerAddresses.add(panelContendoOsEnderecos);
panelContendoOsEnderecos.setLayout(new BoxLayout(panelContendoOsEnderecos, BoxLayout.Y_AXIS));
jPanelCustomerOrders = new JPanel();
panel.add(jPanelCustomerOrders);
txtarea_1 = new JTextField();
txtarea_1.setText("Área 3");
jPanelCustomerOrders.add(txtarea_1);
txtarea_1.setColumns(10);
initComponents();
pack();
setLocationRelativeTo(parent);
LoadCustomerDataWorker worker = new LoadCustomerDataWorker(this);
ExecutorService singleThreadPool = Executors.newSingleThreadExecutor();
singleThreadPool.execute(worker);
}
public void addCustomerAddresses(List<CustomerAddress> customerAddresses) {
Objects.requireNonNull(customerAddresses);
DefaultListModel<CustomerAddress> listModel = new DefaultListModel<>();
for (CustomerAddress customerAddress : customerAddresses) {
listModel.addElement(customerAddress);
}
jListCustomerAddresses = new JList<>(listModel);
jListCustomerAddresses.setCellRenderer(new PanelIndividualCustomerAddress());
jListCustomerAddresses.setVisibleRowCount(2);
panelContendoOsEnderecos.add(jListCustomerAddresses);
pack();
}
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Ver Cliente");
}
}
LoadCustomerDataWorker.java
package testdialog;
import java.util.ArrayList;
import java.util.List;
import javax.swing.SwingWorker;
import testdialog.JDViewCustomer;
import testdialog.CustomerAddress;
public class LoadCustomerDataWorker extends SwingWorker<Void, Void> {
private final JDViewCustomer dialog;
private List<CustomerAddress> customerAddresses = null;
public LoadCustomerDataWorker(JDViewCustomer dialog) {
this.dialog = dialog;
}
#Override
protected Void doInBackground() throws Exception {
customerAddresses = new ArrayList<>();
customerAddresses.add(new CustomerAddress("1. Casa"));
customerAddresses.add(new CustomerAddress("2. Trabalho"));
customerAddresses.add(new CustomerAddress("3. Casa"));
customerAddresses.add(new CustomerAddress("4. Trabalho"));
return null;
}
#Override
protected void done() {
if (customerAddresses != null && customerAddresses.size() > 0) {
dialog.addCustomerAddresses(customerAddresses);
}
}
}
PanelIndividualCustomerAddress.java
package testdialog;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import testdialog.CustomerAddress;
public class PanelIndividualCustomerAddress implements ListCellRenderer<CustomerAddress> {
#Override
public Component getListCellRendererComponent(JList<? extends CustomerAddress> list, CustomerAddress value, int index, boolean isSelected,
boolean cellHasFocus) {
JPanel panelEnderecoIndividual = new JPanel();
panelEnderecoIndividual.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(3, 3, 3, 3)));
panelEnderecoIndividual.setBackground(Color.WHITE);
panelEnderecoIndividual.setLayout(new BoxLayout(panelEnderecoIndividual, BoxLayout.Y_AXIS));
JPanel panelTituloEndereco = new JPanel();
panelTituloEndereco.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
FlowLayout fl_panelTituloEndereco = (FlowLayout) panelTituloEndereco.getLayout();
fl_panelTituloEndereco.setAlignment(FlowLayout.LEFT);
panelTituloEndereco.setBackground(new Color(220, 220, 220));
panelEnderecoIndividual.add(panelTituloEndereco);
JLabel lblCasa = new JLabel(value.getTitle()); // "Casa"
panelTituloEndereco.add(lblCasa);
JPanel panelDadosDoEndereco = new JPanel();
panelDadosDoEndereco.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
panelDadosDoEndereco.setBackground(Color.WHITE);
panelEnderecoIndividual.add(panelDadosDoEndereco);
GridBagLayout gbl_panelDadosDoEndereco = new GridBagLayout();
gbl_panelDadosDoEndereco.columnWidths = new int[]{83, 184, 68, 102, 65, 134, 0};
gbl_panelDadosDoEndereco.rowHeights = new int[]{0, 0, 20, 0};
gbl_panelDadosDoEndereco.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
gbl_panelDadosDoEndereco.rowWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE};
panelDadosDoEndereco.setLayout(gbl_panelDadosDoEndereco);
JLabel lblEndereco = new JLabel("Endereço:");
lblEndereco.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblEndereo = new GridBagConstraints();
gbc_lblEndereo.anchor = GridBagConstraints.WEST;
gbc_lblEndereo.insets = new Insets(0, 0, 5, 5);
gbc_lblEndereo.gridx = 0;
gbc_lblEndereo.gridy = 0;
panelDadosDoEndereco.add(lblEndereco, gbc_lblEndereo);
JLabel lblNomeDaRua = new JLabel("Nome da rua");
GridBagConstraints gbc_lblNomeDaRua = new GridBagConstraints();
gbc_lblNomeDaRua.anchor = GridBagConstraints.WEST;
gbc_lblNomeDaRua.gridwidth = 3;
gbc_lblNomeDaRua.insets = new Insets(0, 0, 5, 5);
gbc_lblNomeDaRua.gridx = 1;
gbc_lblNomeDaRua.gridy = 0;
panelDadosDoEndereco.add(lblNomeDaRua, gbc_lblNomeDaRua);
JLabel lblNumero = new JLabel("Número:");
lblNumero.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblNumero = new GridBagConstraints();
gbc_lblNumero.anchor = GridBagConstraints.WEST;
gbc_lblNumero.insets = new Insets(0, 0, 5, 5);
gbc_lblNumero.gridx = 4;
gbc_lblNumero.gridy = 0;
panelDadosDoEndereco.add(lblNumero, gbc_lblNumero);
JLabel lblValorDoNumero = new JLabel("Valor do número");
GridBagConstraints gbc_lblValorDoNumero = new GridBagConstraints();
gbc_lblValorDoNumero.anchor = GridBagConstraints.WEST;
gbc_lblValorDoNumero.insets = new Insets(0, 0, 5, 0);
gbc_lblValorDoNumero.gridx = 5;
gbc_lblValorDoNumero.gridy = 0;
panelDadosDoEndereco.add(lblValorDoNumero, gbc_lblValorDoNumero);
JLabel lblComplemento = new JLabel("Complemento:");
lblComplemento.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblComplemento = new GridBagConstraints();
gbc_lblComplemento.anchor = GridBagConstraints.WEST;
gbc_lblComplemento.insets = new Insets(0, 0, 5, 5);
gbc_lblComplemento.gridx = 0;
gbc_lblComplemento.gridy = 1;
panelDadosDoEndereco.add(lblComplemento, gbc_lblComplemento);
JLabel lblTextoDoComplemento = new JLabel("Texto do complemento");
GridBagConstraints gbc_lblTextoDoComplemento = new GridBagConstraints();
gbc_lblTextoDoComplemento.anchor = GridBagConstraints.WEST;
gbc_lblTextoDoComplemento.insets = new Insets(0, 0, 5, 5);
gbc_lblTextoDoComplemento.gridx = 1;
gbc_lblTextoDoComplemento.gridy = 1;
panelDadosDoEndereco.add(lblTextoDoComplemento, gbc_lblTextoDoComplemento);
JLabel lblBairro = new JLabel("Bairro:");
lblBairro.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblBairro = new GridBagConstraints();
gbc_lblBairro.anchor = GridBagConstraints.WEST;
gbc_lblBairro.insets = new Insets(0, 0, 5, 5);
gbc_lblBairro.gridx = 2;
gbc_lblBairro.gridy = 1;
panelDadosDoEndereco.add(lblBairro, gbc_lblBairro);
JLabel lblNomeDoBairro = new JLabel("Nome do bairro");
GridBagConstraints gbc_lblNomeDoBairro = new GridBagConstraints();
gbc_lblNomeDoBairro.anchor = GridBagConstraints.WEST;
gbc_lblNomeDoBairro.insets = new Insets(0, 0, 5, 5);
gbc_lblNomeDoBairro.gridx = 3;
gbc_lblNomeDoBairro.gridy = 1;
panelDadosDoEndereco.add(lblNomeDoBairro, gbc_lblNomeDoBairro);
JLabel lblCidade = new JLabel("Cidade:");
lblCidade.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblCidade = new GridBagConstraints();
gbc_lblCidade.anchor = GridBagConstraints.WEST;
gbc_lblCidade.insets = new Insets(0, 0, 5, 5);
gbc_lblCidade.gridx = 4;
gbc_lblCidade.gridy = 1;
panelDadosDoEndereco.add(lblCidade, gbc_lblCidade);
JLabel lblNomeDaCidade = new JLabel("Nome da cidade");
GridBagConstraints gbc_lblNomeDaCidade = new GridBagConstraints();
gbc_lblNomeDaCidade.anchor = GridBagConstraints.WEST;
gbc_lblNomeDaCidade.insets = new Insets(0, 0, 5, 0);
gbc_lblNomeDaCidade.gridx = 5;
gbc_lblNomeDaCidade.gridy = 1;
panelDadosDoEndereco.add(lblNomeDaCidade, gbc_lblNomeDaCidade);
JLabel lblCep = new JLabel("CEP:");
lblCep.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblCep = new GridBagConstraints();
gbc_lblCep.anchor = GridBagConstraints.WEST;
gbc_lblCep.insets = new Insets(0, 0, 0, 5);
gbc_lblCep.gridx = 0;
gbc_lblCep.gridy = 2;
panelDadosDoEndereco.add(lblCep, gbc_lblCep);
JLabel lblNumeroDoCep = new JLabel("Número do CEP");
GridBagConstraints gbc_lblNumeroDoCep = new GridBagConstraints();
gbc_lblNumeroDoCep.anchor = GridBagConstraints.WEST;
gbc_lblNumeroDoCep.insets = new Insets(0, 0, 0, 5);
gbc_lblNumeroDoCep.gridx = 1;
gbc_lblNumeroDoCep.gridy = 2;
panelDadosDoEndereco.add(lblNumeroDoCep, gbc_lblNumeroDoCep);
JLabel lblPontoRef = new JLabel("Ponto ref.:");
lblPontoRef.setFont(new Font("Tahoma", Font.BOLD, 11));
GridBagConstraints gbc_lblPontoRef = new GridBagConstraints();
gbc_lblPontoRef.anchor = GridBagConstraints.WEST;
gbc_lblPontoRef.insets = new Insets(0, 0, 0, 5);
gbc_lblPontoRef.gridx = 2;
gbc_lblPontoRef.gridy = 2;
panelDadosDoEndereco.add(lblPontoRef, gbc_lblPontoRef);
JLabel lblPertoDeTalLugar = new JLabel("Perto de tal lugar");
GridBagConstraints gbc_lblPertoDeTalLugar = new GridBagConstraints();
gbc_lblPertoDeTalLugar.anchor = GridBagConstraints.WEST;
gbc_lblPertoDeTalLugar.gridwidth = 3;
gbc_lblPertoDeTalLugar.gridx = 3;
gbc_lblPertoDeTalLugar.gridy = 2;
panelDadosDoEndereco.add(lblPertoDeTalLugar, gbc_lblPertoDeTalLugar);
return panelEnderecoIndividual;
}
}
setVisibleRowCount() only works if the JList is the view of a JScrollPane (that is, the main child of the JScrollPane). In your program, the JScrollPane’s view is a JPanel, not a JList.
I have a fucntion in where I am implemeting the rmi server interface (SchoolInterfaceImpl) I want to check the jtextfield (textField_6) is empty or not if empty load a Jdialog box (FindStudent) how I do this
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.Date;
public class SchoolInterfaceImpl implements SchoolInterface {
#Override
public void find(String str) throws RemoteException, SQLException {
// TODO Auto-generated method stub
}
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import com.toedter.calendar.JDateChooser;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class StudentProfile extends JFrame {
String noOfClasses;
private JPanel contentPane;
private JTextField textField;
private JLabel lblFatherguardianName;
private JTextField textField_1;
private JLabel lblGender;
private JComboBox comboBox;
private JLabel lblDateOfBirth;
private JDateChooser dateChooser;
private JLabel lblCurrentAddress;
private JLabel lblPermenantAddress;
private JLabel lblPhoneNo;
private JLabel lblMobileNo;
private JLabel lblClass;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JTextField textField_5;
private JComboBox comboBox_1;
private JLabel lblRegistrationNo;
private JTextField textField_6;
private JButton btnFind;
private JButton btnSave;
private JButton btnEdit;
private JButton btnDelete;
private JButton btnCancel;
private JLabel label;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
StudentProfile frame = new StudentProfile();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public StudentProfile() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("Student Profile");
setBounds(100, 100, 525, 375);
setLocation(100, 200);
setResizable(false);
setAlwaysOnTop(true);
setVisible(true);
contentPane = new JPanel();
contentPane.setBackground(Color.WHITE);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
gbl_contentPane.columnWeights = new double[]{0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
contentPane.setLayout(gbl_contentPane);
String str = "Female";
lblRegistrationNo = new JLabel("Registration No.");
GridBagConstraints gbc_lblRegistrationNo = new GridBagConstraints();
gbc_lblRegistrationNo.anchor = GridBagConstraints.WEST;
gbc_lblRegistrationNo.insets = new Insets(0, 0, 5, 5);
gbc_lblRegistrationNo.gridx = 1;
gbc_lblRegistrationNo.gridy = 2;
contentPane.add(lblRegistrationNo, gbc_lblRegistrationNo);
textField_6 = new JTextField();
GridBagConstraints gbc_textField_6 = new GridBagConstraints();
gbc_textField_6.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_6.insets = new Insets(0, 0, 5, 5);
gbc_textField_6.gridx = 3;
gbc_textField_6.gridy = 2;
contentPane.add(textField_6, gbc_textField_6);
textField_6.setColumns(10);
btnFind = new JButton("Find");
btnFind.setBackground(Color.WHITE);
btnFind.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FindStudent fs = new FindStudent();
fs.setModal(true);
fs.setVisible(true);
}
});
GridBagConstraints gbc_btnFind = new GridBagConstraints();
gbc_btnFind.anchor = GridBagConstraints.WEST;
gbc_btnFind.insets = new Insets(0, 0, 5, 5);
gbc_btnFind.gridx = 4;
gbc_btnFind.gridy = 2;
contentPane.add(btnFind, gbc_btnFind);
label = new JLabel("Picture");
GridBagConstraints gbc_label = new GridBagConstraints();
gbc_label.gridheight = 5;
gbc_label.gridwidth = 3;
gbc_label.insets = new Insets(0, 0, 5, 5);
gbc_label.gridx = 5;
gbc_label.gridy = 2;
contentPane.add(label, gbc_label);
JLabel lblStudentName = new JLabel("Student Name");
GridBagConstraints gbc_lblStudentName = new GridBagConstraints();
gbc_lblStudentName.anchor = GridBagConstraints.WEST;
gbc_lblStudentName.gridwidth = 2;
gbc_lblStudentName.insets = new Insets(0, 0, 5, 5);
gbc_lblStudentName.gridx = 1;
gbc_lblStudentName.gridy = 3;
contentPane.add(lblStudentName, gbc_lblStudentName);
textField = new JTextField();
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
gbc_textField.insets = new Insets(0, 0, 5, 5);
gbc_textField.gridx = 3;
gbc_textField.gridy = 3;
contentPane.add(textField, gbc_textField);
textField.setColumns(20);
lblFatherguardianName = new JLabel("Father/Guardian Name");
GridBagConstraints gbc_lblFatherguardianName = new GridBagConstraints();
gbc_lblFatherguardianName.anchor = GridBagConstraints.WEST;
gbc_lblFatherguardianName.insets = new Insets(0, 0, 5, 5);
gbc_lblFatherguardianName.gridx = 1;
gbc_lblFatherguardianName.gridy = 4;
contentPane.add(lblFatherguardianName, gbc_lblFatherguardianName);
textField_1 = new JTextField();
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_1.insets = new Insets(0, 0, 5, 5);
gbc_textField_1.gridx = 3;
gbc_textField_1.gridy = 4;
contentPane.add(textField_1, gbc_textField_1);
textField_1.setColumns(20);
lblGender = new JLabel("Gender");
GridBagConstraints gbc_lblGender = new GridBagConstraints();
gbc_lblGender.anchor = GridBagConstraints.WEST;
gbc_lblGender.insets = new Insets(0, 0, 5, 5);
gbc_lblGender.gridx = 1;
gbc_lblGender.gridy = 5;
contentPane.add(lblGender, gbc_lblGender);
comboBox = new JComboBox();
comboBox.setBackground(Color.WHITE);
GridBagConstraints gbc_comboBox = new GridBagConstraints();
gbc_comboBox.anchor = GridBagConstraints.WEST;
comboBox.setPrototypeDisplayValue(str);
comboBox.setMaximumRowCount(2);
gbc_comboBox.insets = new Insets(0, 0, 5, 5);
gbc_comboBox.gridx = 3;
gbc_comboBox.gridy = 5;
contentPane.add(comboBox, gbc_comboBox);
lblDateOfBirth = new JLabel("Date of Birth");
GridBagConstraints gbc_lblDateOfBirth = new GridBagConstraints();
gbc_lblDateOfBirth.anchor = GridBagConstraints.WEST;
gbc_lblDateOfBirth.insets = new Insets(0, 0, 5, 5);
gbc_lblDateOfBirth.gridx = 1;
gbc_lblDateOfBirth.gridy = 6;
contentPane.add(lblDateOfBirth, gbc_lblDateOfBirth);
dateChooser = new JDateChooser();
dateChooser.getCalendarButton().setBackground(Color.WHITE);
GridBagConstraints gbc_dateChooser = new GridBagConstraints();
gbc_dateChooser.fill = GridBagConstraints.HORIZONTAL;
gbc_dateChooser.anchor = GridBagConstraints.NORTH;
gbc_dateChooser.insets = new Insets(0, 0, 5, 5);
gbc_dateChooser.gridx = 3;
gbc_dateChooser.gridy = 6;
contentPane.add(dateChooser, gbc_dateChooser);
lblCurrentAddress = new JLabel("Current Address");
GridBagConstraints gbc_lblCurrentAddress = new GridBagConstraints();
gbc_lblCurrentAddress.anchor = GridBagConstraints.WEST;
gbc_lblCurrentAddress.insets = new Insets(0, 0, 5, 5);
gbc_lblCurrentAddress.gridx = 1;
gbc_lblCurrentAddress.gridy = 7;
contentPane.add(lblCurrentAddress, gbc_lblCurrentAddress);
String str1 = "Computer Sciences";
textField_2 = new JTextField();
GridBagConstraints gbc_textField_2 = new GridBagConstraints();
gbc_textField_2.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_2.insets = new Insets(0, 0, 5, 5);
gbc_textField_2.gridx = 3;
gbc_textField_2.gridy = 7;
contentPane.add(textField_2, gbc_textField_2);
textField_2.setColumns(20);
lblPermenantAddress = new JLabel("Permenant Address");
GridBagConstraints gbc_lblPermenantAddress = new GridBagConstraints();
gbc_lblPermenantAddress.anchor = GridBagConstraints.WEST;
gbc_lblPermenantAddress.insets = new Insets(0, 0, 5, 5);
gbc_lblPermenantAddress.gridx = 1;
gbc_lblPermenantAddress.gridy = 8;
contentPane.add(lblPermenantAddress, gbc_lblPermenantAddress);
textField_3 = new JTextField();
GridBagConstraints gbc_textField_3 = new GridBagConstraints();
gbc_textField_3.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_3.insets = new Insets(0, 0, 5, 5);
gbc_textField_3.gridx = 3;
gbc_textField_3.gridy = 8;
contentPane.add(textField_3, gbc_textField_3);
textField_3.setColumns(20);
lblPhoneNo = new JLabel("Phone No.");
GridBagConstraints gbc_lblPhoneNo = new GridBagConstraints();
gbc_lblPhoneNo.anchor = GridBagConstraints.WEST;
gbc_lblPhoneNo.insets = new Insets(0, 0, 5, 5);
gbc_lblPhoneNo.gridx = 1;
gbc_lblPhoneNo.gridy = 9;
contentPane.add(lblPhoneNo, gbc_lblPhoneNo);
textField_4 = new JTextField();
GridBagConstraints gbc_textField_4 = new GridBagConstraints();
gbc_textField_4.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_4.insets = new Insets(0, 0, 5, 5);
gbc_textField_4.gridx = 3;
gbc_textField_4.gridy = 9;
contentPane.add(textField_4, gbc_textField_4);
textField_4.setColumns(20);
lblMobileNo = new JLabel("Mobile No.");
GridBagConstraints gbc_lblMobileNo = new GridBagConstraints();
gbc_lblMobileNo.anchor = GridBagConstraints.WEST;
gbc_lblMobileNo.insets = new Insets(0, 0, 5, 5);
gbc_lblMobileNo.gridx = 1;
gbc_lblMobileNo.gridy = 10;
contentPane.add(lblMobileNo, gbc_lblMobileNo);
textField_5 = new JTextField();
GridBagConstraints gbc_textField_5 = new GridBagConstraints();
gbc_textField_5.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_5.insets = new Insets(0, 0, 5, 5);
gbc_textField_5.gridx = 3;
gbc_textField_5.gridy = 10;
contentPane.add(textField_5, gbc_textField_5);
textField_5.setColumns(20);
lblClass = new JLabel("Class");
GridBagConstraints gbc_lblClass = new GridBagConstraints();
gbc_lblClass.anchor = GridBagConstraints.WEST;
gbc_lblClass.insets = new Insets(0, 0, 5, 5);
gbc_lblClass.gridx = 1;
gbc_lblClass.gridy = 11;
contentPane.add(lblClass, gbc_lblClass);
comboBox_1 = new JComboBox();
comboBox_1.setBackground(Color.WHITE);
GridBagConstraints gbc_comboBox_1 = new GridBagConstraints();
comboBox_1.setPrototypeDisplayValue(str);
comboBox_1.setMaximumRowCount(10);
gbc_comboBox_1.anchor = GridBagConstraints.WEST;
gbc_comboBox_1.insets = new Insets(0, 0, 5, 5);
gbc_comboBox_1.gridx = 3;
gbc_comboBox_1.gridy = 11;
contentPane.add(comboBox_1, gbc_comboBox_1);
btnSave = new JButton("Save");
btnSave.setBackground(Color.WHITE);
GridBagConstraints gbc_btnSave = new GridBagConstraints();
gbc_btnSave.anchor = GridBagConstraints.EAST;
gbc_btnSave.insets = new Insets(0, 0, 5, 5);
gbc_btnSave.gridx = 3;
gbc_btnSave.gridy = 13;
contentPane.add(btnSave, gbc_btnSave);
btnEdit = new JButton("Edit");
btnEdit.setBackground(Color.WHITE);
GridBagConstraints gbc_btnEdit = new GridBagConstraints();
gbc_btnEdit.insets = new Insets(0, 0, 5, 5);
gbc_btnEdit.gridx = 4;
gbc_btnEdit.gridy = 13;
contentPane.add(btnEdit, gbc_btnEdit);
btnDelete = new JButton("Delete");
btnDelete.setBackground(Color.WHITE);
GridBagConstraints gbc_btnDelete = new GridBagConstraints();
gbc_btnDelete.insets = new Insets(0, 0, 5, 5);
gbc_btnDelete.gridx = 5;
gbc_btnDelete.gridy = 13;
contentPane.add(btnDelete, gbc_btnDelete);
btnCancel = new JButton("Cancel");
btnCancel.setBackground(Color.WHITE);
GridBagConstraints gbc_btnCancel = new GridBagConstraints();
gbc_btnCancel.insets = new Insets(0, 0, 5, 5);
gbc_btnCancel.gridx = 6;
gbc_btnCancel.gridy = 13;
contentPane.add(btnCancel, gbc_btnCancel);
}
}
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.GridBagLayout;
import javax.swing.JTextField;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JTable;
import java.util.Vector;
import javax.swing.JLabel;
import java.awt.Color;
public class FindStudent extends JDialog {
private final JPanel contentPanel = new JPanel();
private JTextField textField;
private JTextField textField_1;
private JTable table;
Connection conn = null;
Statement stmt = null;
static Vector<Vector<String>> data = new Vector<Vector<String>>();
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
FindStudent dialog = new FindStudent();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the dialog.
*/
public FindStudent() {
Vector<Vector<String>> data = new Vector<Vector<String>>();
Vector<String> columnNames = new Vector<String>();
columnNames.add("RegNo");
columnNames.add("StudentName");
columnNames.add("FatherName");
columnNames.add("Class");
String query = "Select RegNo, StudentName, FatherName, Class from SchoolDB.dbo.StudentProfile";
try{
conn = DriverManager.getConnection("jdbc:sqlserver:" + "//" +
"localhost;1433" + "Database=SchooDB"+";integratedSecurity=true;");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
stmt = conn.createStatement();
//data.clear();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
Vector<String> vstring = new Vector<String>();
vstring.add(rs.getString("RegNo"));
vstring.add(rs.getString("StudentName"));
vstring.add(rs.getString("FatherName"));
vstring.add(rs.getString("Class"));
data.add(vstring);
}
}
catch (Exception e){
e.printStackTrace();
}
/*catch (SQLException e) {
e.printStackTrace();
}*/
finally{
if (stmt != null) {
try {
stmt.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
setBounds(100, 100, 430, 350);
this.setAlwaysOnTop(true);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBackground(Color.WHITE);
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
GridBagLayout gbl_contentPanel = new GridBagLayout();
gbl_contentPanel.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
gbl_contentPanel.rowHeights = new int[]{0, 0, 35, 0};
gbl_contentPanel.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
gbl_contentPanel.rowWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE};
contentPanel.setLayout(gbl_contentPanel);
{
textField = new JTextField();
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.anchor = GridBagConstraints.NORTH;
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
gbc_textField.gridwidth = 25;
gbc_textField.insets = new Insets(0, 0, 10, 5);
gbc_textField.gridx = 1;
gbc_textField.gridy = 0;
contentPanel.add(textField, gbc_textField);
textField.setColumns(10);
}
{
textField_1 = new JTextField();
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
gbc_textField_1.gridwidth = 25;
gbc_textField_1.insets = new Insets(0, 0, 10, 5);
gbc_textField_1.anchor = GridBagConstraints.NORTH;
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_1.gridx = 1;
gbc_textField_1.gridy = 1;
contentPanel.add(textField_1, gbc_textField_1);
textField_1.setColumns(10);
}
{
table = new JTable();
GridBagConstraints gbc_table = new GridBagConstraints();
gbc_table.insets = new Insets(0, 0, 0, 5);
gbc_table.anchor = GridBagConstraints.NORTH;
gbc_table.gridwidth = 3;
gbc_table.gridx = 1;
gbc_table.gridy = 2;
DefaultTableModel model = new DefaultTableModel(data, columnNames);
final JTable table = new JTable(model){/**
*
*/
// private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int column) {
return false;
};
};
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setPreferredScrollableViewportSize(new Dimension(425, 200));
table.setFillsViewportHeight(true);
table.getColumnModel().getColumn(0).setPreferredWidth(90);
table.getColumnModel().getColumn(1).setPreferredWidth(120);
table.getColumnModel().getColumn(2).setPreferredWidth(120);
table.getColumnModel().getColumn(3).setPreferredWidth(40);
JScrollPane jsp = new JScrollPane(table);
GridBagConstraints jsp_scroll = new GridBagConstraints();
jsp_scroll.insets = new Insets(0, 0, 0, 5);
jsp_scroll.fill = GridBagConstraints.BOTH;
jsp_scroll.gridwidth = 25;
jsp_scroll.gridx = 1;
jsp_scroll.gridy = 3;
contentPanel.add(jsp, jsp_scroll);
}
{
JPanel buttonPane = new JPanel();
buttonPane.setBackground(Color.WHITE);
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton okButton = new JButton("OK");
okButton.setBackground(Color.WHITE);
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
{
JButton cancelButton = new JButton("Cancel");
cancelButton.setBackground(Color.WHITE);
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);
}
}
}
}
I suppose, instead of checking the emptiness of textField_6 inside SchoolInterfaceImpl, you need to do it when the "Find" button is clicked as follows:
btnFind.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String strTextField_6 = textField_6.getText();
if ("".equals(strTextField_6)) {
FindStudent fs = new FindStudent();
fs.setModal(true);
fs.setVisible(true);
}
SchoolInterfaceImpl sii = new SchoolInterfaceImpl();
sii.find(strTextField_6);
}
});
I am not sure what actually you mean because I am not home now, but you can try this:
if (textField_6.getText().equals("")) {
Jdialog findStudent = new Jdialog(with the arguments needed);
findStudent.setVisible(true);
}
Basiclly I got 2 calsses, SSPUserInput and SSPViewer.
I want to press a button in SSPUserInput class and change a JLabel name in SSPViewer. It's basically a rock paper scissor game. This is my first time posting here, I'm sorry if I've done something wrong.
package p3;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class SSPUserInput extends JPanel implements ActionListener {
private JPanel panel = new JPanel();
private JButton btnRock = new JButton ("Rock");
private JButton btnScissor = new JButton ("Scissor");
private JButton btnPaper = new JButton ("Paper");
private JButton btnNewGame = new JButton ("New game");
private JButton btnQuit = new JButton ("Quit");
private Font plainSS14 = new Font("SansSerif", Font.PLAIN, 14);
private SSPViewer lblHumanChoice;
private String rock;
private int scissor;
private int paper;
public SSPUserInput(SSPViewer lblHumanChoice) {
this.lblHumanChoice = lblHumanChoice;
}
public SSPUserInput(){
setPreferredSize (new Dimension(400, 200));
setLayout( null);
btnRock.setBounds(20, 50, 100, 35);
btnRock.setFont(plainSS14);
btnRock.addActionListener(this);
btnScissor.setBounds(155, 50, 100, 35);
btnScissor.setFont(plainSS14);
btnScissor.addActionListener(this);
btnPaper.setBounds(290, 50, 100, 35);
btnPaper.setFont(plainSS14);
btnPaper.addActionListener(this);
btnNewGame.setBounds(20, 100, 370, 35);
btnNewGame.setFont(plainSS14);
btnNewGame.addActionListener(this);
btnQuit.setBounds(20, 150, 370, 35);
btnQuit.setFont(plainSS14);
btnQuit.addActionListener(this);
add(btnRock);
add(btnScissor);
add(btnPaper);
add(btnNewGame);
add(btnQuit);
}
// public String getRock() {
// return rock;
// }
public void actionPerformed(ActionEvent e) {
if( e.getSource() == btnRock ) {
JOptionPane.showMessageDialog(null, "Hello world!");
}
else if( e.getSource() == btnScissor){
}
else if( e.getSource() == btnPaper){
}
else if( e.getSource() == btnNewGame){
}
}
}
package p3;
import java.awt.*;
import javax.swing.*;
public class SSPViewer extends JPanel {
private JLabel lblFirst = new JLabel("First to 3!");
private JLabel lblHuman = new JLabel("Human");
private JLabel lblComputer = new JLabel("Computer");
private JLabel lblHumanChoice = new JLabel();
private JLabel lblComputerChoice = new JLabel();
private JLabel lblHumanPoints = new JLabel("0");
private JLabel lblComputerPoints = new JLabel("0");
private SSPUserInput rock;
private SSPUserInput scissor;
private SSPUserInput paper;
public SSPViewer(SSPUserInput rock, SSPUserInput scissor, SSPUserInput paper) {
this.rock = rock;
this.scissor = scissor;
this.paper = paper;
}
public SSPViewer() {
setLayout(null);
setPreferredSize(new Dimension(400, 200));
lblFirst.setBounds(140, 10, 210, 24);
lblFirst.setFont(new Font("Arial", 2, 24));
lblHuman.setBounds(100, 75, 210, 17);
lblHuman.setFont(new Font("Arial", 2, 17));
lblComputer.setBounds(250, 75, 210, 17);
lblComputer.setFont(new Font("Arial", 2, 17));
lblHumanPoints.setBounds(120, 95, 210, 17);
lblHumanPoints.setFont(new Font("Arial", 2, 17));
lblComputerPoints.setBounds(280, 95, 210, 17);
lblComputerPoints.setFont(new Font("Arial", 2, 17));
lblHumanChoice.setBounds(100, 115, 210, 17);
lblHumanChoice.setFont(new Font("Arial", 2, 17));
// lblHuman.setText(rock.getRock());
lblComputerChoice.setBounds(260, 115, 210, 17);
lblComputerChoice.setFont(new Font("Arial", 2, 17));
add(lblFirst);
add(lblHuman);
add(lblComputer);
add(lblHumanPoints);
add(lblComputerPoints);
add(lblHumanChoice);
add(lblComputerChoice);
}
public JLabel getLblHumanChoice() {
return lblHumanChoice;
}
}
package p3;
import javax.swing.*;
public class SSPApp {
public static void main( String[] args ) {
SSPPlayer player = new SSPPlayer();
SSPViewer viewer = new SSPViewer();
SSPController controller = new SSPController();
SSPUserInput userInput = new SSPUserInput();
JFrame frame1 = new JFrame( "SSPViewer" );
frame1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame1.add( viewer );
frame1.pack();
frame1.setVisible( true );
JFrame frame2 = new JFrame( "SSPUserInput" );
frame2.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame2.add( userInput );
frame2.pack();
frame2.setVisible( true );
}
}
Basically you need to hold a reference to the 'view' on the 'userInput'. And you already have it.
public ExampleFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new GridLayout(2, 1));
setContentPane(contentPane);
// create a view
SSPViewer sspViewer = new SSPViewer();
contentPane.add(sspViewer);
// pass a reference to the userInput
contentPane.add(new SSPUserInput(sspViewer));
}
on the viewer class, you need to add a method to access the local private components, for example im going to change a text of JLabel :
public class SSPViewer extends JPanel {
// code ...
// setter. lblHuman is a reference here in that class
// to the view class, so all public members are available
public void setTextExample (String s){
this.lblHuman.setText(s);
}
}
Then on the userInput class, you can 'refer' to that property on the other JPanel :
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnRock) {
JOptionPane.showMessageDialog(null, "Hello world!");
// accessible now
lblHumanChoice.setTextExample("changed from other panel");
} else ...
}
NOTE: I edited the answer.
I've added the codes here. This way when you press ROCK button(for example), it shows its name in the other window. I used JFrame and called the SSPViewer class inside of SSPUserInput class. NOTE: I think you want to call some other classes inside SSPApp(that's why I wrote it) but even if you run SSPUserInput, it still pops up two windows.Now they are somethings like that: enter image description here and like this
SSPUserInput class
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.AbstractButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SSPUserInput extends JFrame {
private JPanel contentPane;
JButton PaperButton;
JButton ScissorButton;
JButton rockButton;
SSPViewer viewer = new SSPViewer();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SSPUserInput frame = new SSPUserInput();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public SSPUserInput() {
viewer.frame.setVisible(true); //this code is important
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
GridBagLayout gbl_panel = new GridBagLayout();
gbl_panel.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0};
gbl_panel.rowHeights = new int[]{0, 0, 93, 9, 19, 0, 0, 0};
gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE};
gbl_panel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
panel.setLayout(gbl_panel);
rockButton = new JButton("ROCK");
GridBagConstraints gbc_rockButton = new GridBagConstraints();
gbc_rockButton.fill = GridBagConstraints.HORIZONTAL;
gbc_rockButton.insets = new Insets(0, 0, 5, 5);
gbc_rockButton.gridx = 1;
gbc_rockButton.gridy = 3;
panel.add(rockButton, gbc_rockButton);
ScissorButton = new JButton("Scissor");
GridBagConstraints gbc_ScissorButton = new GridBagConstraints();
gbc_ScissorButton.fill = GridBagConstraints.BOTH;
gbc_ScissorButton.insets = new Insets(0, 0, 5, 5);
gbc_ScissorButton.gridx = 3;
gbc_ScissorButton.gridy = 3;
panel.add(ScissorButton, gbc_ScissorButton);
PaperButton = new JButton("PAPER");
GridBagConstraints gbc_PaperButton = new GridBagConstraints();
gbc_PaperButton.fill = GridBagConstraints.HORIZONTAL;
gbc_PaperButton.insets = new Insets(0, 0, 5, 0);
gbc_PaperButton.gridx = 5;
gbc_PaperButton.gridy = 3;
panel.add(PaperButton, gbc_PaperButton);
JButton btnNewGame = new JButton("New Game");
GridBagConstraints gbc_btnNewGame = new GridBagConstraints();
gbc_btnNewGame.fill = GridBagConstraints.HORIZONTAL;
gbc_btnNewGame.insets = new Insets(0, 0, 5, 5);
gbc_btnNewGame.gridx = 3;
gbc_btnNewGame.gridy = 5;
panel.add(btnNewGame, gbc_btnNewGame);
JButton btnQuit = new JButton("Quit");
GridBagConstraints gbc_btnQuit = new GridBagConstraints();
gbc_btnQuit.fill = GridBagConstraints.HORIZONTAL;
gbc_btnQuit.insets = new Insets(0, 0, 0, 5);
gbc_btnQuit.gridx = 3;
gbc_btnQuit.gridy = 6;
panel.add(btnQuit, gbc_btnQuit);
MyListener2 listener = new MyListener2();
rockButton.addActionListener(listener);
ScissorButton.addActionListener(listener);
PaperButton.addActionListener(listener);
}
private class MyListener2 implements ActionListener {
public void mousePressed(ActionEvent e) {
//System.out.println(((JButton) e.getSource()).getText());
//String name = ((JButton) e.getSource()).getText();
}
#Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println(((JButton) arg0.getSource()).getText());
String name = ((JButton) arg0.getSource()).getText();
viewer.humanWin.setText(name);
}
}
}
SSPViewer class
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import java.awt.Insets;
public class SSPViewer {
JFrame frame;
JLabel humanWin;
JLabel computerWin;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SSPViewer window = new SSPViewer();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public SSPViewer() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
GridBagLayout gbl_panel = new GridBagLayout();
gbl_panel.columnWidths = new int[]{0, 0, 4, 0, 0, 0, 0, 0, 0};
gbl_panel.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0};
gbl_panel.columnWeights = new double[]{0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE};
gbl_panel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
panel.setLayout(gbl_panel);
JLabel lblFirstTo = new JLabel("First to 3!");
GridBagConstraints gbc_lblFirstTo = new GridBagConstraints();
gbc_lblFirstTo.insets = new Insets(0, 0, 5, 5);
gbc_lblFirstTo.gridx = 5;
gbc_lblFirstTo.gridy = 2;
panel.add(lblFirstTo, gbc_lblFirstTo);
JLabel lblHuman = new JLabel("Human");
GridBagConstraints gbc_lblHuman = new GridBagConstraints();
gbc_lblHuman.gridwidth = 3;
gbc_lblHuman.insets = new Insets(0, 0, 5, 5);
gbc_lblHuman.gridx = 2;
gbc_lblHuman.gridy = 4;
panel.add(lblHuman, gbc_lblHuman);
JLabel lblComputer = new JLabel("Computer");
GridBagConstraints gbc_lblComputer = new GridBagConstraints();
gbc_lblComputer.insets = new Insets(0, 0, 5, 0);
gbc_lblComputer.gridx = 7;
gbc_lblComputer.gridy = 4;
panel.add(lblComputer, gbc_lblComputer);
humanWin = new JLabel("");
GridBagConstraints gbc_humanWin = new GridBagConstraints();
gbc_humanWin.insets = new Insets(0, 0, 0, 5);
gbc_humanWin.gridx = 3;
gbc_humanWin.gridy = 6;
panel.add(humanWin, gbc_humanWin);
computerWin = new JLabel("");
GridBagConstraints gbc_computerWin = new GridBagConstraints();
gbc_computerWin.gridx = 7;
gbc_computerWin.gridy = 6;
panel.add(computerWin, gbc_computerWin);
}
}
SSPApp class
public class SSPApp {
SSPUserInput s = new SSPUserInput();
}
This question already has an answer here:
Getting runtime errors in Java program
(1 answer)
Closed 8 years ago.
Okay, so I did javac dicebot.java, it worked fine, but when I did java dicebot.java I got this:
I really do not know how much better I can explain it considering I have no clue what these errors that I got mean. So any help would be great, Thank you!
It is different than that question that you stated there because it has nothing to do with it. This is a completely different question and it's errors are unique...
java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1086)
at java.awt.Container.add(Container.java:966)
at dicebot.<init>(dicebot.java:67)
at dicebot$1.run(dicebot.java:26)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Here is my coding that I made and tried to run:
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class dicebot extends JFrame implements ActionListener {
static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textField;
public static JComboBox combo;
public static JButton btnConfirm;
public static JTextField txtUserName;
public static JTextField txtStartBid;
public static JTextField txtMultiplier;
public static JTextField txtMinRemaining;
public static JTextField txtPassword;
public static JTextField txtOdds;
public static JTextField txtMaxBet;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
dicebot frame = new dicebot();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public dicebot() {
setTitle("Dice Bot");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.WEST);
GridBagLayout gbl_panel = new GridBagLayout();
gbl_panel.columnWidths = new int[]{0, 0};
gbl_panel.rowHeights = new int[]{0, 0};
gbl_panel.columnWeights = new double[]{0.0, 1.0};
gbl_panel.rowWeights = new double[]{0.0, Double.MIN_VALUE};
panel.setLayout(gbl_panel);
//Every new Label however needs every part that says "user" or on the Password: "pass" changed to something unique.
JLabel userTag = new JLabel("Username:");
GridBagConstraints gbc_userTag = new GridBagConstraints();
gbc_userTag.insets = new Insets(0, 0, 0, 5);
gbc_userTag.anchor = GridBagConstraints.EAST;
gbc_userTag.gridx = 0;//Here are your x + y coords
gbc_userTag.gridy = 0;//Adding to x moves left, adding to y moves down
panel.add(userTag, gbc_userTag);
//Every new textfield needs only the * part to change for it to be valid. (gbc_* =)
txtUserName = new JTextField();
GridBagConstraints txtUserName = new GridBagConstraints();
txtUserName.fill = GridBagConstraints.HORIZONTAL;
txtUserName.gridx = 1;
txtUserName.gridy = 0;
panel.add(textField,txtUserName);
textField.setColumns(10);
JLabel startTag = new JLabel("Starting Bid:");
GridBagConstraints gbc_startTag = new GridBagConstraints();
gbc_startTag.insets = new Insets(0, 0, 0, 5);
gbc_startTag.anchor = GridBagConstraints.EAST;
gbc_startTag.gridx = 0;
gbc_startTag.gridy = 2;
panel.add(startTag, gbc_startTag);
txtStartBid = new JTextField();
GridBagConstraints txtStartBid = new GridBagConstraints();
txtStartBid.fill = GridBagConstraints.HORIZONTAL;
txtStartBid.gridx = 1;
txtStartBid.gridy = 2;
panel.add(textField, txtStartBid);
textField.setColumns(10);
JLabel multTag = new JLabel("Multiplier:");
GridBagConstraints gbc_multTag = new GridBagConstraints();
gbc_multTag.insets = new Insets(0, 0, 0, 5);
gbc_multTag.anchor = GridBagConstraints.EAST;
gbc_multTag.gridx = 0;
gbc_multTag.gridy = 3;
panel.add(multTag, gbc_multTag);
txtMultiplier = new JTextField();
GridBagConstraints txtMultiplier = new GridBagConstraints();
txtMultiplier.fill = GridBagConstraints.HORIZONTAL;
txtMultiplier.gridx = 1;
txtMultiplier.gridy = 3;
panel.add(textField, txtMultiplier);
textField.setColumns(10);
JLabel minTag = new JLabel("Min Remaining:");
GridBagConstraints gbc_minTag = new GridBagConstraints();
gbc_minTag.insets = new Insets(0, 0, 0, 5);
gbc_minTag.anchor = GridBagConstraints.EAST;
gbc_minTag.gridx = 0;
gbc_minTag.gridy = 4;
panel.add(minTag, gbc_minTag);
txtMinRemaining = new JTextField();
GridBagConstraints txtMinRemaining = new GridBagConstraints();
txtMinRemaining.fill = GridBagConstraints.HORIZONTAL;
txtMinRemaining.gridx = 1;
txtMinRemaining.gridy = 4;
panel.add(textField, txtMinRemaining);
textField.setColumns(10);
txtPassword = new JTextField();
GridBagConstraints txtPassword = new GridBagConstraints();
txtPassword.fill = GridBagConstraints.HORIZONTAL;
txtPassword.gridx = 1;
txtPassword.gridy = 1;
panel.add(textField, txtPassword);
textField.setColumns(10);
JLabel passTag = new JLabel("Password:");
GridBagConstraints gbc_passTag = new GridBagConstraints();
gbc_passTag.insets = new Insets(0, 0, 0, 5);
gbc_passTag.anchor = GridBagConstraints.EAST;
gbc_passTag.gridx = 0;
gbc_passTag.gridy = 1;
panel.add(passTag, gbc_passTag);
txtOdds = new JTextField();
GridBagConstraints txtOdds = new GridBagConstraints();
txtOdds.fill = GridBagConstraints.HORIZONTAL;
txtOdds.gridx = 1;
txtOdds.gridy = 5;
panel.add(textField, txtOdds);
textField.setColumns(10);
JLabel oddsTag = new JLabel("Odds %:");
GridBagConstraints gbc_oddsTag = new GridBagConstraints();
gbc_oddsTag.insets = new Insets(0, 0, 0, 5);
gbc_oddsTag.anchor = GridBagConstraints.EAST;
gbc_oddsTag.gridx = 0;
gbc_oddsTag.gridy = 5;
panel.add(oddsTag, gbc_oddsTag);
txtMaxBet = new JTextField();
GridBagConstraints txtMaxBet = new GridBagConstraints();
txtMaxBet.fill = GridBagConstraints.HORIZONTAL;
txtMaxBet.gridx = 1;
txtMaxBet.gridy = 6;
panel.add(textField, txtMaxBet);
textField.setColumns(10);
//This is the Combo Box
combo = new JComboBox<String>(new String[]{"BTC","LTC","PPC","NMC","XPM","FTC","ANC","DOGE","NXT"});
combo.addActionListener(this);
GridBagConstraints gbc_list = new GridBagConstraints();
gbc_list.fill = GridBagConstraints.HORIZONTAL;
gbc_list.gridx = 1;
gbc_list.gridy = 7;
panel.add(combo, gbc_list);
JLabel maxTag = new JLabel("MaxBet:");
GridBagConstraints gbc_maxTag = new GridBagConstraints();
gbc_maxTag.insets = new Insets(0, 0, 0, 5);
gbc_maxTag.anchor = GridBagConstraints.EAST;
gbc_maxTag.gridx = 0;
gbc_maxTag.gridy = 6;
panel.add(maxTag, gbc_maxTag);
JPanel panel_1 = new JPanel();
contentPane.add(panel_1, BorderLayout.SOUTH);
panel_1.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5));
btnConfirm = new JButton("Turn Up");
btnConfirm.addActionListener(this);
panel_1.add(btnConfirm);
JScrollPane scrollPane = new JScrollPane();
contentPane.add(scrollPane, BorderLayout.CENTER);
JTextArea textArea = new JTextArea("Current Balance");
textArea.setColumns(1);
scrollPane.setViewportView(textArea);
JScrollPane scrollPanel1 = new JScrollPane();//This will hold the information the bot sends over such as win/loose or error
contentPane.add(scrollPane, BorderLayout.CENTER);
JTextArea textAreal = new JTextArea("Input bot information here...");
textArea.setColumns(20);
scrollPane.setViewportView(textArea);
pack();
}
#Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == combo) {
System.out.println(combo.getSelectedIndex()+1);
}
}
}
A NullPointerException means that something is trying to call a method or access a variable of an object which is null.
According to your comment the exception is thrown at
panel.add(textField,txtUserName);
Now, txtUserName is initialized few lines before so it shouldn't be the cause, what about textField variable?
As Jack pointed out, textField is not initialized.
I've read the documentation for GridBagLayout and I can't make sense of it. I basically want to accomplish something like this:
I made some example code to help me figure this out. How can I modify this code to accomplish this?
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JLabel label = new JLabel("label");
JTextField field = new JTextField();
JLabel label2 = new JLabel("label2");
JTextField field2 = new JTextField();
JPanel jp = new JPanel();
jp.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
//gbc.weightx = ??
jp.add(label, gbc);
gbc.gridx = 1;
gbc.gridwidth = 2;
//gbc.weightx = ??
jp.add(field, gbc);
JPanel jp2 = new JPanel();
jp2.setLayout(new GridBagLayout());
GridBagConstraints gbc2 = new GridBagConstraints();
gbc2.fill = GridBagConstraints.BOTH;
gbc2.gridx = 0;
gbc2.gridy = 0;
gbc2.gridwidth = 1;
//gbc2.weightx = ??
jp2.add(label2, gbc2);
gbc2.gridx = 1;
gbc2.gridwidth = 2;
//gbc2.weightx = ??
jp2.add(field2, gbc2);
JPanel jpContainer = new JPanel();
jpContainer.setLayout(new BoxLayout(jpContainer, BoxLayout.Y_AXIS));
jpContainer.add(jp);
jpContainer.add(jp2);
JFrame f = new JFrame();
f.setSize(300, 100);
f.setContentPane(jpContainer);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
EDIT: Changed JTextArea to JTextField
Using GridBagLayout columnWidths you can manually adjust the widths and then set the GridBagConstraints fill to GridBagConstraints.HORIZONTAL :
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import javax.swing.JTextField;
import java.awt.Insets;
public class Example extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Example frame = new Example();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Example() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[] {100, 0};
gbl_contentPane.rowHeights = new int[]{0, 0, 0};
gbl_contentPane.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
gbl_contentPane.rowWeights = new double[]{0.0, 0.0, Double.MIN_VALUE};
contentPane.setLayout(gbl_contentPane);
JLabel lblNewLabel = new JLabel("jlabel");
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel.anchor = GridBagConstraints.WEST;
gbc_lblNewLabel.gridx = 0;
gbc_lblNewLabel.gridy = 0;
contentPane.add(lblNewLabel, gbc_lblNewLabel);
textField = new JTextField();
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.insets = new Insets(0, 0, 5, 0);
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
gbc_textField.gridx = 1;
gbc_textField.gridy = 0;
contentPane.add(textField, gbc_textField);
textField.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("jlabel2");
GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints();
gbc_lblNewLabel_1.anchor = GridBagConstraints.WEST;
gbc_lblNewLabel_1.insets = new Insets(0, 0, 0, 5);
gbc_lblNewLabel_1.gridx = 0;
gbc_lblNewLabel_1.gridy = 1;
contentPane.add(lblNewLabel_1, gbc_lblNewLabel_1);
textField_1 = new JTextField();
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_1.gridx = 1;
gbc_textField_1.gridy = 1;
contentPane.add(textField_1, gbc_textField_1);
textField_1.setColumns(10);
}
}
Of course, if you want to maintain the 1/3 Label and 2/3 JTextField, you might consider using a MigLayout as such:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import net.miginfocom.swing.MigLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class MigLayoutExample extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MigLayoutExample frame = new MigLayoutExample();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MigLayoutExample() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new MigLayout("", "[grow 33][grow 66]", "[][]"));
JLabel lblNewLabel = new JLabel("New label");
contentPane.add(lblNewLabel, "cell 0 0");
textField = new JTextField();
contentPane.add(textField, "cell 1 0,growx");
textField.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("New label");
contentPane.add(lblNewLabel_1, "cell 0 1");
textField_1 = new JTextField();
contentPane.add(textField_1, "cell 1 1,growx");
textField_1.setColumns(10);
}
}
You only have two components on each row so you can only have two columns.
If you want the JTextArea to occupy more space then define the JTextArea like:
JTextArea textArea = new JTextArea(3, 30);
to control the size of the text area by specifying the row/columns of the text area.
I'm not sure why you are using a JTextArea. It seems like a JTextField would be more appropriate. You can also specify the columns when you create a JTextField. Check out the JTextField API.