JList size in JDialog - java

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.

Related

JPanel with CardLayout is blank when it changed

I've a problem with a JPanel.
It's a CardLayout and two sub-panel that change.
I need to do a button which switch from subpanel 1 to 2 and display selected Product.
ISSUE:
When I select a product card, JPanel changes but it's blank.
If I step over the window with the mouse , the buttons appear, but not the JLabels.
And If I resize the windows, it's empty again.
What is the problem?
EDIT:
Here the code that return same error.
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.*;
import javax.swing.*;
public class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
// private String title;
// private Dimension d;
public MainFrame(String title, Dimension d) {
// LoginPanel template = new LoginPanel(this);
// RegisterPanel template = new RegisterPanel(this);
CustomerPanel template = new CustomerPanel(this);
this.setTitle(title);
this.setSize(d);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.getContentPane().add(template);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new MainFrame("Fubars", new Dimension(800, 650));
});
}
}
#SuppressWarnings("serial")
class CustomerPanel extends JPanel {
MainFrame mf;
JPanel one, two;
JPanel panel;
public CustomerPanel(MainFrame mf) {
this.mf = mf;
mf.getContentPane().setLayout(new CardLayout(0, 0));
JPanel container = new JPanel();
mf.getContentPane().add(container, "name_36743208542992");
container.setLayout(new BorderLayout(0, 0));
JPanel back = new JPanel();
container.add(back, BorderLayout.NORTH);
back.setLayout(new FlowLayout(FlowLayout.LEFT));
JButton btnControl = new JButton("<");
back.add(btnControl);
panel = new JPanel();
container.add(panel, BorderLayout.CENTER);
CardLayout cl = new CardLayout(0, 0);
panel.setLayout(cl);
one = new OnePanel(this.mf);
two = new JPanel();
panel.add(one, "1");
panel.add(two, "2");
btnControl.addActionListener(new ActionListener() {
#Override
public void actionPerformed(ActionEvent e) {
two = new LoginPanel(mf);
cl.next(panel);
}
});
}
}
#SuppressWarnings("serial")
class LoginPanel extends JPanel {
// private MainFrame mf;
private JTextField textField;
private JPasswordField passwordField;
public LoginPanel(MainFrame mf) {
// this.mf = mf;
mf.getContentPane().setLayout(new BorderLayout(0, 0));
JPanel panel = new JPanel();
mf.getContentPane().add(panel, BorderLayout.CENTER);
GridBagLayout gbl_panel = new GridBagLayout();
gbl_panel.columnWidths = new int[] { 100, 55, 72, 171, 0 };
gbl_panel.rowHeights = new int[] { 69, 22, 22, 0 };
gbl_panel.columnWeights = new double[] { 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE };
gbl_panel.rowWeights = new double[] { 0.0, 0.0, 0.0, Double.MIN_VALUE };
panel.setLayout(gbl_panel);
JLabel lblNewLabel = new JLabel("Email");
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
gbc_lblNewLabel.fill = GridBagConstraints.HORIZONTAL;
gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel.gridx = 1;
gbc_lblNewLabel.gridy = 1;
panel.add(lblNewLabel, gbc_lblNewLabel);
textField = new JTextField();
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.anchor = GridBagConstraints.NORTH;
gbc_textField.insets = new Insets(0, 0, 5, 0);
gbc_textField.gridx = 3;
gbc_textField.gridy = 1;
panel.add(textField, gbc_textField);
textField.setColumns(15);
JLabel lblNewLabel_1 = new JLabel("Password");
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 = 1;
gbc_lblNewLabel_1.gridy = 2;
panel.add(lblNewLabel_1, gbc_lblNewLabel_1);
passwordField = new JPasswordField();
passwordField.setColumns(15);
GridBagConstraints gbc_passwordField = new GridBagConstraints();
gbc_passwordField.anchor = GridBagConstraints.NORTH;
gbc_passwordField.gridx = 3;
gbc_passwordField.gridy = 2;
panel.add(passwordField, gbc_passwordField);
JPanel panel_1 = new JPanel();
mf.getContentPane().add(panel_1, BorderLayout.SOUTH);
panel_1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 30));
JButton btnNewButton = new JButton("LOGIN");
panel_1.add(btnNewButton);
btnNewButton.setActionCommand("login");
JButton btnRegistration = new JButton("REGISTER");
panel_1.add(btnRegistration);
btnRegistration.setActionCommand("registration");
}
}
#SuppressWarnings("serial")
class OnePanel extends JPanel {
// private MainFrame mf;
public OnePanel(MainFrame mf) {
// this.mf = mf;
mf.getContentPane().setLayout(new CardLayout(0, 0));
JPanel container = new JPanel();
mf.getContentPane().add(container, "name_36743208542992");
container.setLayout(new BorderLayout(0, 0));
JPanel image = new JPanel();
container.add(image, BorderLayout.CENTER);
JButton btnImageBack = new JButton("<");
image.add(btnImageBack);
JLabel imageContainer = new JLabel("Images");
image.add(imageContainer);
imageContainer.setBounds(new Rectangle(100, 100, 100, 100));
imageContainer.setHorizontalTextPosition(SwingConstants.CENTER);
imageContainer.setHorizontalAlignment(SwingConstants.CENTER);
imageContainer.setAlignmentX(Component.CENTER_ALIGNMENT);
imageContainer.setIconTextGap(3);
imageContainer.setIcon(null);
JButton btnImageForward = new JButton(">");
image.add(btnImageForward);
btnImageForward.setAlignmentY(Component.BOTTOM_ALIGNMENT);
btnImageForward.setAlignmentX(Component.CENTER_ALIGNMENT);
JPanel info = new JPanel();
container.add(info, BorderLayout.EAST);
GridBagLayout gbl_info = new GridBagLayout();
gbl_info.columnWidths = new int[] { 0, 0, 63, 0, 0, 0 };
gbl_info.rowHeights = new int[] { 0, 0, 25, 0, 0, 0, 0 };
gbl_info.columnWeights = new double[] { 1.0, 0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE };
gbl_info.rowWeights = new double[] { 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE };
info.setLayout(gbl_info);
JLabel lblTitle = new JLabel("Title");
GridBagConstraints gbc_lblTitle = new GridBagConstraints();
gbc_lblTitle.anchor = GridBagConstraints.NORTHWEST;
gbc_lblTitle.insets = new Insets(0, 0, 5, 5);
gbc_lblTitle.gridx = 2;
gbc_lblTitle.gridy = 1;
info.add(lblTitle, gbc_lblTitle);
JLabel lblDescription = new JLabel("Description");
GridBagConstraints gbc_lblDescription = new GridBagConstraints();
gbc_lblDescription.anchor = GridBagConstraints.WEST;
gbc_lblDescription.insets = new Insets(0, 0, 5, 5);
gbc_lblDescription.gridx = 2;
gbc_lblDescription.gridy = 2;
info.add(lblDescription, gbc_lblDescription);
JLabel lblPrice = new JLabel("Price");
GridBagConstraints gbc_lblPrice = new GridBagConstraints();
gbc_lblPrice.anchor = GridBagConstraints.WEST;
gbc_lblPrice.insets = new Insets(0, 0, 5, 5);
gbc_lblPrice.gridx = 2;
gbc_lblPrice.gridy = 3;
info.add(lblPrice, gbc_lblPrice);
lblPrice.setToolTipText("Price");
JButton btnAddCart = new JButton("Add to Cart");
GridBagConstraints gbc_btnAddCart = new GridBagConstraints();
gbc_btnAddCart.insets = new Insets(0, 0, 5, 5);
gbc_btnAddCart.anchor = GridBagConstraints.WEST;
gbc_btnAddCart.gridx = 2;
gbc_btnAddCart.gridy = 4;
info.add(btnAddCart, gbc_btnAddCart);
}
}

getting data from jtextfield from other class if jtextfield empty load jdialog box

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);
}

duplication of jtable entries

i am first time asking question on stackexchange so don't know how to work on it
this is my code of jdialog where i am using jtable and getting data from sql
but each time i press my FIND button in another jframe to load this jdialog first time it show no duplication as much as i press button to load jdialog it duplicate the same data as many times
it shows the list of names in data base
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.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<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();
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);
this.setModal(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);/*{
#Override
public Dimension getPreferredScrollableViewportSize()
{
return new Dimension(100, 100);
}
};*/
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);
}
}
}
}
static Vector<Vector<String>> data = new Vector<Vector<String>>();
the data is a class level variable.
In your case you need not have a class level variable to store data.
instead you can have a local variable inside FindStudent() constructor.
Could you please move following statement:
Vector<Vector<String>> data = new Vector<Vector<String>>();
as the first statement inside your constructor:
public FindStudent() and see the result?
After the above change your class looks like as follows:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
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 java.util.Vector;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
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;
/**
* 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();
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);
this.setModal(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);/*{
#Override
public Dimension getPreferredScrollableViewportSize()
{
return new Dimension(100, 100);
}
};*/
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);
}
}
}
}
Either make data non-static, or do data.clear() before you start iterating thru your result set.

JLabel and JButton

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();
}

Why is my Java swing application misbehaving?

When I try to maximize the window, the orinigal window rendering remains while another maximized window appears making it messy.
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.*;
import javax.swing.table.TableColumnModel;
/**
* #author ad *
*/
public class Blotter {
private JFrame topFrame;
private JPanel mainContentPanel;
private JList unsubscribedFields;
private JList subscribedFields;
private JButton butSubscribe;
private JButton butUnsubscribe;
private JButton butApply;
private JButton butOk;
private JButton butCancel;
private JPanel panConfirm;
private JPanel panToggle;
private JPanel panBottom;
private JPanel panLeftList;
private JPanel panRightList;
private JPanel panSubcribe;
private JPanel panUnsubscribe;
/**
* #param args
*/
public Blotter(){
topFrame = new JFrame("Subscription Fields");
mainContentPanel = new JPanel(new BorderLayout());
/*
butSubscribe = new JButton("-->");
butUnsubscribe= new JButton("<--");
butApply = new JButton("Apply");
butOk = new JButton("OK");
butCancel = new JButton("Cancel");*/
createAndBuildGui();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Blotter b = new Blotter();
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
b.createAndBuildGui();
b.fillGUI();
}
private void fillGUI() {
String[] someRow = {"S110","200","100","42","32"};
}
public void createAndBuildGui()
{
panConfirm = new JPanel(new GridLayout(1,3,5,5));
panToggle = new JPanel(new GridBagLayout());
panBottom = new JPanel(new FlowLayout());
butApply = new JButton("Apply");
butOk = new JButton("OK");
butCancel = new JButton("Cancel");
unsubscribedFields = new JList();
subscribedFields = new JList();
butSubscribe = new JButton(">>>");
butUnsubscribe = new JButton("<<<");
panSubcribe = new JPanel(new BorderLayout());
panUnsubscribe = new JPanel(new BorderLayout());
panLeftList = new JPanel(new BorderLayout());
panRightList = new JPanel(new BorderLayout());
// GridBagConstraints(int gridx, int gridy, int gridwidth,
// int gridheight, double weightx, double weighty,
// int anchor, int fill, Insets insets, int ipadx, int ipady)
panLeftList.add(unsubscribedFields, BorderLayout.CENTER);
panRightList.add(subscribedFields, BorderLayout.CENTER);
panSubcribe.add(butSubscribe, BorderLayout.SOUTH);
panUnsubscribe.add(butUnsubscribe, BorderLayout.NORTH);
panToggle.add(panLeftList,
new GridBagConstraints(0, 0, 1, 2, 0.5, 1, GridBagConstraints.CENTER,
GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
panToggle.add(panRightList,
new GridBagConstraints(2, 0, 1, 2, 0.5, 1, GridBagConstraints.CENTER,
GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
panToggle.add(panSubcribe,
new GridBagConstraints(1, 0, 1, 1, 0, 0.5, GridBagConstraints.SOUTH,
GridBagConstraints.NONE, new Insets(0, 2, 4, 4), 0, 0));
panToggle.add(panUnsubscribe,
new GridBagConstraints(1, 1, 1, 1, 0, 0.5, GridBagConstraints.NORTH,
GridBagConstraints.NONE, new Insets(0, 2, 4, 4), 0, 0));
// Building bottom OK Apply Cancel panel.
panConfirm.add(butApply, 0);
panConfirm.add(butOk, 1);
panConfirm.add(butCancel, 2);
panBottom = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panBottom.add(panConfirm, BorderLayout.EAST);
// building main content panel
mainContentPanel.add(panToggle,BorderLayout.CENTER);
mainContentPanel.add(panBottom, BorderLayout.SOUTH);
topFrame.add(mainContentPanel);
topFrame.pack();
topFrame.setVisible(true);
topFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
protected void createPriceTable() {
// More fields : "Quantity Done","Quantity Open","PInst","State","Cancel State","Executing System","WaveID","Source System","TraderID","Average Price","LastExecutionPrice","ClientOrderTag","OldQuantityDone"
String[] columnNames = {"OrderId","Account","Symbol","Side","Quantity",};
Object[][] o = new Object[0][columnNames.length];
}
}
You're calling createAndBuildGui() twice: once in main and once in the constructor.
public Blotter(){
topFrame = new JFrame("Subscription Fields");
mainContentPanel = new JPanel(new BorderLayout());
// ...
createAndBuildGui(); <--------
}
public static void main(String[] args) {
Blotter b = new Blotter();
// ...
b.createAndBuildGui(); <--------
b.fillGUI();
}
If you remove one of them, it works just fine.
It depends on layout manager you are using. For example BorderLayout knows to re-render elements when frame size is changed. Unfortunately you did not mention which window works for you and which does not but I saw GridBagLayout in your code. Probably this layout (better to say usage of this layout) prevents similar behavior.

Categories