Note that there are some explanatory texts on larger screens.

plurals
  1. POCurrent date wont update
    text
    copied!<p>I have 2 buttons one to log in and the other to log out. I would like both of them to show different times but for some reason unknown to me they do not. and when all the info is saved to a file it says null where there's no information. If there is a way to change that it would be greatly appreciated.</p> <pre><code>import java.awt.BorderLayout; 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 java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class MainGUI extends JFrame { DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Date date = new Date(); String[] columnNames = {"ID", "NAME", "COURSE", "Professor", "Reason for Tutor", "Login Time", "Logout Time"}; Object[][] data = new Object[25][7]; // table JTable table = new JTable(data, columnNames) { @Override public boolean isCellEditable(int row, int column) { return false; } }; JFrame frame, frame1; JPanel buttonPanel, buttonPanel2, tablePanel, addPanel, editPanel; JLabel labelID, labelName, labelCourse, labelProfessor, labelHelp, labelDate, labelDate2; JTextField txtID, txtName, txtCourse, txtProfessor, txtHelp, txtDate, txtDate2; JButton btnAdd, btnEdit, btnDelete, btnSort, btnSave, btnAddInput, btnCancel; int keyCode, rowIndex, rowNumber, noOfStudents; MainGUI.ButtonHandler bh = new MainGUI.ButtonHandler(); public MainGUI() { table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.getSelectionModel().addListSelectionListener(new MainGUI.RowListener()); table.getColumnModel().getColumn(1).setPreferredWidth(150); table.getColumnModel().getColumn(3).setPreferredWidth(100); table.getColumnModel().getColumn(4).setPreferredWidth(200); table.getColumnModel().getColumn(5).setPreferredWidth(150); table.getColumnModel().getColumn(6).setPreferredWidth(150); table.getTableHeader().setResizingAllowed(false); table.getTableHeader().setReorderingAllowed(false); JScrollPane scrollPane = new JScrollPane(table); btnAdd = new JButton("Login"); btnAdd.addActionListener(bh); btnEdit = new JButton("EDIT"); btnEdit.addActionListener(bh); btnEdit.setEnabled(false); btnDelete = new JButton("DELETE"); btnDelete.addActionListener(bh); btnDelete.setEnabled(false); btnSort = new JButton("Logout"); btnSort.addActionListener(bh); btnSave = new JButton("SAVE"); btnSave.addActionListener(bh); btnSave.setActionCommand("Save"); btnAddInput = new JButton("Login"); btnAddInput.addActionListener(bh); btnAddInput.setActionCommand("AddInput"); btnCancel = new JButton("Cancel"); btnCancel.addActionListener(bh); labelID = new JLabel("ID"); labelName = new JLabel("NAME"); labelCourse = new JLabel("Course"); labelProfessor = new JLabel("Professor"); labelHelp = new JLabel("Reason for Tutoring"); labelDate = new JLabel("Login"); labelDate2 = new JLabel("Logout"); txtID = new JTextField(20); txtName = new JTextField(20); txtCourse = new JTextField(20); txtProfessor = new JTextField(20); txtHelp = new JTextField(20); txtDate = new JTextField(20); txtDate2 = new JTextField(20); txtID.setDocument(new MainGUI.JTextFieldLimit(15)); txtID.addKeyListener(keyListener); tablePanel = new JPanel(); tablePanel.setLayout(new BoxLayout(tablePanel, BoxLayout.PAGE_AXIS)); tablePanel.setBorder(BorderFactory.createEmptyBorder(10, 2, 0, 10)); tablePanel.add(table.getTableHeader()); tablePanel.add(table); buttonPanel = new JPanel(); buttonPanel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; c.ipady = 20; c.insets = new Insets(10, 10, 10, 10); c.fill = GridBagConstraints.HORIZONTAL; buttonPanel.add(btnAdd, c); c.gridx = 0; c.gridy = 1; c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 20; c.insets = new Insets(10, 10, 10, 10); buttonPanel.add(btnEdit, c); c.gridx = 0; c.gridy = 2; c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 20; c.insets = new Insets(10, 10, 10, 10); buttonPanel.add(btnDelete, c); c.gridx = 0; c.gridy = 3; c.ipady = 20; c.insets = new Insets(10, 10, 10, 10); c.fill = GridBagConstraints.HORIZONTAL; buttonPanel.add(btnSort, c); c.gridx = 0; c.gridy = 4; c.ipady = 20; c.insets = new Insets(10, 10, 10, 10); c.fill = GridBagConstraints.HORIZONTAL; buttonPanel.add(btnSave, c); frame = new JFrame("Tutoring Database"); frame.setVisible(true); frame.setResizable(false); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.add(tablePanel, BorderLayout.CENTER); frame.add(buttonPanel, BorderLayout.EAST); frame.pack(); addPanel = new JPanel(); addPanel.setLayout(new GridBagLayout()); c.insets = new Insets(1, 0, 1, 1); c.gridx = 0; c.gridy = 0; addPanel.add(labelID, c); c.gridy = 1; addPanel.add(labelName, c); c.gridy = 2; addPanel.add(labelCourse, c); c.gridy = 3; addPanel.add(labelProfessor, c); c.gridy = 4; addPanel.add(labelHelp, c); c.gridy = 5; addPanel.add(labelDate, c); c.gridy = 6; addPanel.add(labelDate2, c); // text fields c.gridx = 1; c.gridy = 0; c.ipady = 1; addPanel.add(txtID, c); c.gridy = 1; c.ipady = 1; addPanel.add(txtName, c); c.gridy = 2; c.ipady = 1; addPanel.add(txtCourse, c); c.gridy = 3; c.ipady = 1; addPanel.add(txtProfessor, c); c.gridy = 4; c.ipady = 1; addPanel.add(txtHelp, c); c.gridy = 5; c.ipady = 1; addPanel.add(txtDate, c); c.gridy = 5; c.ipady = 1; addPanel.add(txtDate2, c); buttonPanel2 = new JPanel(); buttonPanel2.setLayout(new GridLayout(1, 1)); buttonPanel2.add(btnAddInput); buttonPanel2.add(btnCancel); frame1 = new JFrame("Student Database"); frame1.setVisible(false); frame1.setResizable(false); frame1.setDefaultCloseOperation(HIDE_ON_CLOSE); frame1.add(addPanel, BorderLayout.CENTER); frame1.add(buttonPanel2, BorderLayout.PAGE_END); frame1.pack(); }// end KeyListener keyListener = new KeyListener() { @Override public void keyTyped(KeyEvent e) { } @Override public void keyPressed(KeyEvent e) { keyCode = e.getKeyCode(); if (!(keyCode &gt;= 48 &amp;&amp; keyCode &lt;= 57) &amp;&amp; !(keyCode &gt;= 96 &amp;&amp; keyCode &lt;= 105) &amp;&amp; !(keyCode &gt;= 37 &amp;&amp; keyCode &lt;= 40) &amp;&amp; !(keyCode == 127 || keyCode == 8)) { txtID.setEditable(false); } } @Override public void keyReleased(KeyEvent e) { txtID.setEditable(true); } }; class RowListener implements ListSelectionListener { @Override public void valueChanged(ListSelectionEvent event) { if (event.getValueIsAdjusting()) { rowIndex = table.getSelectedRow(); if (data[rowIndex][0] == null || data[rowIndex][0] == "") { btnEdit.setEnabled(false); btnDelete.setEnabled(false); } else { btnEdit.setEnabled(true); btnDelete.setEnabled(true); } } } } class ButtonHandler implements ActionListener { @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Login")) { txtID.setText(""); txtName.setText(""); txtCourse.setText(""); txtProfessor.setText(""); txtHelp.setText(""); txtDate.setText(dateFormat.format(date)); frame1.setTitle("Add Student data"); // title bar name for add frame1.setVisible(true); } else if (e.getActionCommand().equals("EDIT")) { txtID.setText(data[rowIndex][0] + ""); txtName.setText(data[rowIndex][1] + ""); txtCourse.setText(data[rowIndex][2] + ""); txtProfessor.setText(data[rowIndex][3] + ""); txtHelp.setText(data[rowIndex][4] + ""); txtDate.setText(data[rowIndex][5] + ""); txtID.setEditable(false); frame1.setTitle("Edit Student data"); btnAddInput.setActionCommand("Edit2"); btnAddInput.setText("ACCEPT"); frame1.setVisible(true); } else if (e.getActionCommand().equals("DELETE")) { int confirm = JOptionPane.showConfirmDialog(frame, "ARE YOU SURE?", "CONFIRM", JOptionPane.YES_NO_OPTION); if (confirm == 0) { rowIndex = table.getSelectedRow(); rowNumber = 0; noOfStudents--; for (int i = 0; i &lt;= 10; i++) { if (rowIndex != i &amp;&amp; i &lt;= noOfStudents) { data[rowNumber][0] = data[i][0]; data[rowNumber][1] = data[i][1]; data[rowNumber][2] = data[i][2]; data[rowNumber][3] = data[i][3]; data[rowNumber][4] = data[i][4]; data[rowNumber][5] = data[i][5]; rowNumber++; } else if (rowIndex != i &amp;&amp; i &gt; noOfStudents) { data[rowNumber][0] = ""; data[rowNumber][1] = ""; data[rowNumber][2] = ""; data[rowNumber][3] = ""; data[rowNumber][4] = ""; data[rowNumber][5] = ""; rowNumber++; } } if (noOfStudents == 1000) { btnAdd.setEnabled(false); } else { btnAdd.setEnabled(true); } if (noOfStudents == 0) { btnDelete.setEnabled(false); btnEdit.setEnabled(false); } else { btnDelete.setEnabled(true); btnEdit.setEnabled(true); } rowIndex = table.getSelectedRow(); if (data[rowIndex][0] == null || data[rowIndex][0] == "") { btnEdit.setEnabled(false); btnDelete.setEnabled(false); } else { btnEdit.setEnabled(true); btnDelete.setEnabled(true); } table.updateUI(); } } else if (e.getActionCommand().equals("AddInput")) { if (txtID.getText().isEmpty() || txtName.getText().isEmpty() || txtCourse.getText().isEmpty()// / || txtProfessor.getText().isEmpty() || txtHelp.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "PLEASE FILL IN THE BLANKS.", "ERROR!", JOptionPane.ERROR_MESSAGE); } else { int dup = 0; for (int i = 0; i &lt; 10; i++) { if (txtID.getText().equals(data[i][0])) { JOptionPane.showMessageDialog(null, "ID NUMBER ALREADY EXISTS.", "ERROR!", JOptionPane.ERROR_MESSAGE); dup++; } } if (dup == 0) { rowIndex = table.getSelectedRow(); data[noOfStudents][0] = txtID.getText(); data[noOfStudents][1] = txtName.getText(); data[noOfStudents][2] = txtCourse.getText(); data[noOfStudents][3] = txtProfessor.getText(); data[noOfStudents][4] = txtHelp.getText(); data[noOfStudents][5] = txtDate.getText(); table.updateUI(); frame1.dispose(); noOfStudents++; if (noOfStudents == 50){ btnAdd.setEnabled(false); } else { btnAdd.setEnabled(true); } if (data[rowIndex][0] == null) { btnEdit.setEnabled(false); btnDelete.setEnabled(false); } else { btnEdit.setEnabled(true); btnDelete.setEnabled(true); } } } table.updateUI(); }else if(e.getActionCommand().equals("Save")){ try { PrintWriter out = new PrintWriter("Tutor.txt"); for(int i = 0; i &lt; 25; i++) { for(int j = 0; j &lt; 7; j++) { out.print(data[i][j]); out.print(", "); if(j == 6){ out.println(); } } out.flush(); }} catch (FileNotFoundException ex) { } } else if (e.getActionCommand().equals("Logout")) { int confirm = JOptionPane.showConfirmDialog(frame, "ARE YOU SURE?", "CONFIRM", JOptionPane.YES_NO_OPTION); if (confirm == 0) { rowIndex = table.getSelectedRow(); rowNumber = 0; txtDate2.setText(dateFormat.format(date)); } } if (txtID.getText().isEmpty() || txtName.getText().isEmpty() || txtCourse.getText().isEmpty() || txtProfessor.getText().isEmpty() || txtHelp.getText().isEmpty()|| txtHelp.getText().isEmpty()) { } else { data[rowIndex][0] = txtID.getText(); data[rowIndex][1] = txtName.getText(); data[rowIndex][2] = txtCourse.getText(); data[rowIndex][3] = txtProfessor.getText(); data[rowIndex][4] = txtHelp.getText(); data[rowIndex][5] = txtDate.getText(); data[rowIndex][6] = txtDate2.getText(); frame1.dispose(); } table.updateUI(); } } class JTextFieldLimit extends PlainDocument { private int limit; JTextFieldLimit(int limit) { super(); this.limit = limit; } JTextFieldLimit(int limit, boolean upper) { super(); this.limit = limit; } @Override public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { if (str == null) { return; } if ((getLength() + str.length()) &lt;= limit) { super.insertString(offset, str, attr); } } } public static void main(String[] args) { new MainGUI(); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload