I am building a swing application for a course. After I add my JTable to the panel, the table grids and column headers are not showing. Instead a white box appears in the panel where the table was supposed to be. Why is this happening and how to fix it ?
public class ReminderGui implements ActionListener {
JFrame frame;
JPanel panel;
JLabel lblTitle,lblDetails,lblDate,lblTime;
JTextField titleField,dateField;
JTextArea detailsArea;
JButton addButton,cancelButton,rmvButton,rmvallButton,editButton;
JTable table;
JComboBox<String> hourcbo,minutecbo,ampmcbo;
ArrayList<Reminder> remList;
final String hour[]={"12","1","2","3","4","5","6","7","8","9","10","11"};
final String minute[]={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20",
"21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40",
"41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"
};
final String ampm[]={"AM","PM"};
String[] columnname={"Reminder Name", "Reminder Detail","Reminder Date","Reminder Time"};
public ReminderGui() throws FileNotFoundException, IOException, ClassNotFoundException{
panel=new JPanel();
panel.setLayout(null);
lblTitle=new JLabel("Reminder Title");
lblDetails=new JLabel("Reminder Details");
lblDate=new JLabel("Set Date(date/motnth/year)");
lblTime=new JLabel("Set Time");
titleField=new JTextField();
titleField.setMargin(new Insets(5,5,5,5));
detailsArea=new JTextArea(10,20);
detailsArea.setLineWrap(true);
detailsArea.setMargin(new Insets(5,5,5,5));
JScrollPane scroller1=new JScrollPane(detailsArea);
scroller1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//date and time component
dateField=new JTextField();
dateField.setMargin(new Insets(5,5,5,5));
hourcbo=new JComboBox<String>(hour);
hourcbo.setBackground(Color.white);
minutecbo=new JComboBox<String>(minute);
minutecbo.setBackground(Color.white);
ampmcbo=new JComboBox<String>(ampm);
ampmcbo.setBackground(Color.white);
addButton=new JButton("Add");
cancelButton=new JButton("Cancel");
editButton=new JButton("Edit");
rmvButton=new JButton("Remove Selected");
rmvallButton=new JButton("Remove all");
lblTitle.setBounds(30, 30, 100, 30);
panel.add(lblTitle);
titleField.setBounds(150, 30, 400, 30);
panel.add(titleField);
lblDetails.setBounds(30, 80, 100, 30);
panel.add(lblDetails);
scroller1.setBounds(150, 80, 400, 200);
panel.add(scroller1);
lblDate.setBounds(30, 310, 170, 30);
panel.add(lblDate);
dateField.setBounds(210, 310, 100, 30);
panel.add(dateField);
lblTime.setBounds(340, 310, 50, 30);
panel.add(lblTime);
hourcbo.setBounds(400, 310, 100, 30);
minutecbo.setBounds(510, 310, 100, 30);
ampmcbo.setBounds(620, 310, 100, 30);
panel.add(hourcbo);
panel.add(minutecbo);
panel.add(ampmcbo);
addButton.setBounds(30,380,100,30);
panel.add(addButton);
cancelButton.setBounds(160,380,100,30);
panel.add(cancelButton);
File file=new File("appFile.chk");
Object[][] data = null;
if(!(file.exists())){
remList=new ArrayList<Reminder>();
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(remList);
oos.flush();
oos.close();
}
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));
remList=(ArrayList<Reminder>)ois.readObject();
int rownum=remList.size();
data=new String[rownum][4];
Iterator<Reminder> it=remList.iterator();
Reminder rem=null;
for(int i=0;i<rownum;i++){
if(it.hasNext()){
rem=it.next();
}
data[i][0]=rem.getReminderTitle();
data[i][1]=rem.getReminderDetails();
data[i][2]=rem.getReminderDate();
data[i][3]=rem.getReminderTime();
}
ois.close();
//jtable
table=new JTable(data,columnname);
table.setBounds(160,450,400,300);
JScrollPane scroller2=new JScrollPane(table);
scroller1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
panel.add(table);
addButton.addActionListener(this);
cancelButton.addActionListener(this);
editButton.addActionListener(this);
rmvButton.addActionListener(this);
rmvallButton.addActionListener(this);
//set framesize when other works are done
frame=new JFrame("RemindMe!");
frame.add(panel);
frame.setSize(850,840);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
}
@Override
public void actionPerformed(ActionEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
if(e.getSource()==addButton){
String s1=(String)titleField.getText();
String s2=(String)detailsArea.getText();
String s3=(String)dateField.getText();
String s4=(String)hourcbo.getSelectedItem()+":"+(String)minutecbo.getSelectedItem()+" "+(String)ampmcbo.getSelectedItem();
}
else if(e.getSource()==cancelButton){
titleField.setText("");
detailsArea.setText("");
dateField.setText("");
}
}