I am trying to put a JTable with a table model on a tabbed pane. On a regular pane, the table shows fine. When I try to put it on a tabbed pane it does not display the table. In the fetch method is where the new table is suppose to display. On a regular pane I just put add(scroller, BorderLayout.CENTER) and it works fine. Sorry for the length.
import javax.swing.JInternalFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.table.TableColumn;
import java.awt.event.*;
import java.awt.*;
public class AddressBookInternalFrame extends JInternalFrame {
PhoneTableModel mtm = new PhoneTableModel();
JTabbedPane tabbedPane = new JTabbedPane();
JPanel general = new JPanel();
JPanel email = new JPanel();
JPanel phones = new JPanel();
JScrollPane scroller = new JScrollPane();
JPanel p = new JPanel(new BorderLayout());
FlowLayout left = new FlowLayout(FlowLayout.LEFT);
JPanel topPanel = new JPanel();
JLabel addressNumberLabel = new JLabel("Address Number");
JTextField addressNumberField = new JTextField(20);
JLabel addressNameLabel = new JLabel("Name");
JTextField addressNameField = new JTextField(25);
JLabel addressLine1Label = new JLabel("Address Line 1");
JTextField addressLine1Field = new JTextField(25);
JLabel addressLine2Label = new JLabel("Address Line 2");
JTextField addressLine2Field = new JTextField(25);
JLabel cityLabel = new JLabel("City");
JTextField cityField = new JTextField(25);
JLabel stateLabel = new JLabel("State");
JTextField stateField = new JTextField(5);
JLabel zipLabel = new JLabel("Zip Code");
JTextField zipField = new JTextField(10);
JLabel emailLabel = new JLabel("Email");
JTextField emailField = new JTextField(25);
JLabel webAddressLabel = new JLabel("Web Addresss");
JTextField webAddressField = new JTextField(25);
JPanel statusPane = new JPanel(new FlowLayout());
JTextField statusField = new JTextField(45);
JTable table = new JTable();
String mode;
String status;
JButton lookup = new JButton("Lookup");
JButton save = new JButton("Save");
JButton close = new JButton("Close");
JButton add = new JButton("Add");
JButton delete = new JButton("Delete");
AddressBook addressBook = new AddressBook();
WindowStatus windowStatus = new WindowStatus();
NextNumbers nn = new NextNumbers();
public AddressBookInternalFrame() {
super("Address Book Frame",
true, //resizable
false, //closable
true, //maximizable
true);//iconifiable
initializeFields();
lockFields();
mode = "";
mtm = new PhoneTableModel();
table = new JTable(mtm);
scroller = new JScrollPane(table);
topPanel.setLayout(left);
topPanel.add(addressNumberLabel);
topPanel.add(addressNumberField);
topPanel.add(lookup);
topPanel.add(save);
topPanel.add(add);
general.setLayout(new GridLayout(6,2));
general.add(addressNameLabel);
general.add(addressNameField);
general.add(addressLine1Label);
general.add(addressLine1Field);
general.add(addressLine2Label);
general.add(addressLine2Field);
general.add(cityLabel);
general.add(cityField);
general.add(stateLabel);
general.add(stateField);
general.add(zipLabel);
general.add(zipField);
email.setLayout(new GridLayout(6,2));
email.add(emailLabel);
email.add(emailField);
email.add(webAddressLabel);
email.add(webAddressField);
phones.add(scroller);
tabbedPane.addTab("Address Info", general);
tabbedPane.addTab("Email", email);
tabbedPane.addTab("Phones", phones);
save.setEnabled(false);
statusField.setEditable(false);
statusPane.setLayout(left);
statusPane.add(statusField);
statusPane.add(close);
p.add(topPanel, BorderLayout.NORTH);
p.add(tabbedPane, BorderLayout.CENTER);
p.add(statusPane, BorderLayout.SOUTH);
setContentPane(p);
lookup.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusField.setText("");
if (!(addressNumberField.getText()).equals("")) {
String queryString = "SELECT addressNumber, type AS Type, areaCode AS " +
"Area_Code, phone AS Phone, ext AS EXT FROM phones WHERE " +
"addressNumber = " + addressNumberField.getText();
addressBook.getAddress(Integer.parseInt((addressNumberField.getText())));
initializeFields();
addressNumberField.setText(Integer.toString(addressBook.getAddressNumber()));
addressNameField.setText(addressBook.getAddressName());
addressLine1Field.setText(addressBook.getAddressLine1());
addressLine2Field.setText(addressBook.getAddressLine2());
cityField.setText(addressBook.getCity());
stateField.setText(addressBook.getState());
zipField.setText(addressBook.getZip());
emailField.setText(addressBook.getEmail());
webAddressField.setText(addressBook.getWebAddress());
fetch(queryString);
if (!(addressNumberField.getText()).equals(""))
save.setEnabled(true);
enableFields();
}
}
});
add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusField.setText("");
//get next number
// item.AddItem(nn.GetNextNumber("ITEM"), itemField.getText(), itemDescriptionField.getText(),
// categoryCode1Field.getText(), categoryCode2Field.getText(),
// categoryCode3Field.getText(), categoryCode4Field.getText(),
// categoryCode5Field.getText(), Integer.parseInt(supplierField.getText()),
// Double.parseDouble(itemDiscountField.getText()));
// System.out.println("Saved item");
initializeFields();
mode = "add";
save.setEnabled(true);
enableFields();
}
});
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//get next number
statusField.setText("");
System.out.println(addressNumberField.getText());
if(mode.equals("add") && !(addressNumberField.getText()).equals("")){
status = addressBook.addAddress(nn.GetNextNumber("ADDR"), addressNameField.getText(), addressLine1Field.getText(),
addressLine2Field.getText(), cityField.getText(),
stateField.getText(), zipField.getText(),
emailField.getText(), webAddressField.getText());
statusField.setText(status);
nn.IncrementNextNumber("ADDR");
mode = "";
}
else if(!(addressNumberField.getText()).equals("")) {
status = addressBook.updateAddress(Integer.parseInt(addressNumberField.getText()),
addressNameField.getText(), addressLine1Field.getText(), addressLine2Field.getText(),
cityField.getText(), stateField.getText(),
zipField.getText(), emailField.getText(),
webAddressField.getText());
statusField.setText(status);
mode = "";
}
initializeFields();
lockFields();
save.setEnabled(false);
}
});
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
windowStatus.itemOpen = false;
setVisible(false);
dispose();
}
});
setLocation(75,75);
pack();
}
public void initializeFields() {
addressNumberField.setText("");
addressNameField.setText("");
addressLine1Field.setText("");
addressLine2Field.setText("");
cityField.setText("");
stateField.setText("");
zipField.setText("");
emailField.setText("");
webAddressField.setText("0");
}
public void lockFields() {
addressNameField.setEditable(false);
addressLine1Field.setEditable(false);
addressLine2Field.setEditable(false);
cityField.setEditable(false);
stateField.setEditable(false);
zipField.setEditable(false);
emailField.setEditable(false);
webAddressField.setEditable(false);
}
public void enableFields() {
addressNameField.setEditable(true);
addressLine1Field.setEditable(true);
addressLine2Field.setEditable(true);
cityField.setEditable(true);
stateField.setEditable(true);
zipField.setEditable(true);
emailField.setEditable(true);
webAddressField.setEditable(true);
}
public void fetch(String queryString) {
System.out.println("In fetch");
if (scroller != null) {
System.out.println("scoller was not null");
remove(scroller);
}
mtm = new PhoneTableModel();
mtm.executeQuery(queryString);
ItemPriceTableModel
table = new JTable(mtm);
if (mtm.getRowCount() > 0) {
save.setEnabled(true);
add.setEnabled(true);
delete.setEnabled(true);
}
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.removeColumn(table.getColumnModel().getColumn(0));
table.setDefaultRenderer(Double.class, new TwoDecimalRenderer());
// Override default column widths
TableColumn col = table.getColumnModel().getColumn(0);
col.setPreferredWidth(75);
col = table.getColumnModel().getColumn(1);
col.setPreferredWidth(100);
col = table.getColumnModel().getColumn(2);
col.setPreferredWidth(100);
scroller = new JScrollPane(table);
phones.add(scroller, BorderLayout.CENTER);
validate();
statusField.setText("Records fetched: " + mtm.getRowCount());
}
}