Java 教程日志,用于JButton的代码

Java 教程日志,用于JButton的代码,java,swing,jframe,jpanel,jbutton,Java,Swing,Jframe,Jpanel,Jbutton,本课程的目的是让导师记录他/她的学生。我是GUI的新手,所以我的代码可能不是最好的,但我需要JButton“SAVE”代码的帮助,以获取日志中的所有信息并将其存储在.txt文件中。第374行是我的按钮命令所在的位置 import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout;

本课程的目的是让导师记录他/她的学生。我是GUI的新手,所以我的代码可能不是最好的,但我需要JButton“SAVE”代码的帮助,以获取日志中的所有信息并将其存储在.txt文件中。第374行是我的按钮命令所在的位置

    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 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 {
    // Declare variables:
    // array lists
    String[] columnNames = {"ID", "NAME", "COURSE", "Professor", "Reason for Tutor"};
    Object[][] data = new Object[25][5];

    // table
    JTable table = new JTable(data, columnNames) {
      // sets the ability of the cells to be edited by the user
        @Override
      public boolean isCellEditable(int row, int column) {
         return false; // returns false, cannot be edited
      }
     };
     // frames
     JFrame frame, frame1;
     // panels
     JPanel buttonPanel, buttonPanel2, tablePanel, addPanel, editPanel;
     // labels
     JLabel labelID, labelName, labelCourse, labelProfessor, labelHelp;
     // text fields
     JTextField txtID, txtName, txtCourse, txtProfessor, txtHelp;
     // buttons
     JButton btnAdd, btnEdit, btnDelete, btnSort, btnSave, btnAddInput, btnCancel;
     // additionals
     int keyCode, rowIndex, rowNumber, noOfStudents;
     // button handler
     MainGUI.ButtonHandler bh = new MainGUI.ButtonHandler();

     public MainGUI() {
      // setting/modifying table components
      table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      table.getSelectionModel().addListSelectionListener(new MainGUI.RowListener());
      table.getColumnModel().getColumn(1).setPreferredWidth(200);
      table.getColumnModel().getColumn(3).setPreferredWidth(100);
      table.getColumnModel().getColumn(4).setPreferredWidth(200);
      table.getTableHeader().setResizingAllowed(false);
      table.getTableHeader().setReorderingAllowed(false);
      JScrollPane scrollPane = new JScrollPane(table);

      // main buttons
      btnAdd = new JButton("ADD");
      btnAdd.addActionListener(bh);
      btnEdit = new JButton("EDIT");
      btnEdit.addActionListener(bh);
      btnEdit.setEnabled(false); // disables the component
      btnDelete = new JButton("DELETE");
      btnDelete.addActionListener(bh);
      btnDelete.setEnabled(false); // disables the component
      btnSort = new JButton("SORT");
      btnSort.addActionListener(bh);
      btnSave = new JButton("SAVE");
      btnSave.addActionListener(bh);
      btnSave.setActionCommand("Save");

      // with button Listeners

      // sub buttons
      btnAddInput = new JButton("Add");
      btnAddInput.addActionListener(bh);
      btnAddInput.setActionCommand("AddInput");
      btnCancel = new JButton("Cancel");
      btnCancel.addActionListener(bh);

      // set label names
      labelID = new JLabel("ID");
      labelName = new JLabel("NAME");
      labelCourse = new JLabel("COURSE");
      labelProfessor = new JLabel("Professor");
      labelHelp = new JLabel("Reason for Tutoring");

      // set text fields width
      txtID = new JTextField(20);
      txtName = new JTextField(20);
      txtCourse = new JTextField(20);
      txtProfessor = new JTextField(20);
      txtHelp = new JTextField(20);
      txtID.setDocument(new MainGUI.JTextFieldLimit(15)); // limits the length of input:
                                                 // max of 15
      txtID.addKeyListener(keyListener); // accepts only numerals

      // main frame
      // panel for the table
      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);

      // panel for the main buttons
      buttonPanel = new JPanel();
      buttonPanel.setLayout(new GridBagLayout());
      GridBagConstraints c = new GridBagConstraints();

      // positions the main buttons
      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("Student Database");
      frame.setVisible(true);
      frame.setResizable(false);
      frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
      frame.add(tablePanel, BorderLayout.CENTER);
      frame.add(buttonPanel, BorderLayout.EAST);
      frame.pack();

      // ADD frame
      // panel for adding
      addPanel = new JPanel();
      addPanel.setLayout(new GridBagLayout());

      // positions the components for adding
      // labels
      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);
      // 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);

      // panel for other necessary buttons
      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 >= 48 && keyCode <= 57) && !(keyCode >= 96 && keyCode <= 105)
                  && !(keyCode >= 37 && keyCode <= 40) && !(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);
            }
         }
      }
   }// end

   class ButtonHandler implements ActionListener {
        @Override
      public void actionPerformed(ActionEvent e) {
               if (e.getActionCommand().equals("ADD")) {
               // text fields for Student input data
               txtID.setText("");
               txtName.setText("");
               txtCourse.setText("");
               txtProfessor.setText("");
               txtHelp.setText("");

               frame1.setTitle("Add Student data"); // title bar name for add
               frame1.setVisible(true);

               } else if (e.getActionCommand().equals("EDIT")) {
               txtID.setText(data[rowIndex][0] + ""); // will preview the ID
                                                      // input during Add
               txtName.setText(data[rowIndex][1] + ""); // will preview the Name
                                                        // input during Add
               txtCourse.setText(data[rowIndex][2] + ""); // will preview the
                                                          // Course input during
                                                          // Add
               txtProfessor.setText(data[rowIndex][3] + ""); // will preview the Year
                                                        // input during Add
               txtHelp.setText(data[rowIndex][4] + ""); // will preview the
                                                          // Gender input during
                                                          // Add

               txtID.setEditable(false); // forbids the user to edit the entered
                                         // ID number

               frame1.setTitle("Edit Student data"); // title bar name for edit
               btnAddInput.setActionCommand("Edit2");
               btnAddInput.setText("ACCEPT");

               frame1.setVisible(true); // sets the visibility of frame1
            } 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 <= 10; i++) {
                     if (rowIndex != i && i <= 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];
                        rowNumber++;
                     } else if (rowIndex != i && i > noOfStudents) {
                        data[rowNumber][0] = "";
                        data[rowNumber][1] = "";
                        data[rowNumber][2] = "";
                        data[rowNumber][3] = "";
                        data[rowNumber][4] = "";
                        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 < 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();

                     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("filename.txt");
                    out.println(txtID.getText());
                    out.println(txtName.getText());
                    out.println(txtCourse.getText());
                    out.println(txtProfessor.getText());
                    out.println(txtHelp.getText());                    

                } catch (FileNotFoundException ex) {
                }
            }else if (e.getActionCommand().equals("Edit2")) {
               if (txtID.getText().isEmpty() || txtName.getText().isEmpty()
                        || txtCourse.getText().isEmpty() || txtProfessor.getText().isEmpty()
                        || txtHelp.getText().isEmpty()) {
                  JOptionPane.showMessageDialog(null, "INCOMPLETE INPUT.", "ERROR!",
                           JOptionPane.ERROR_MESSAGE);
               } 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();
                  frame1.dispose();
               }

               table.updateUI();

            } else if (e.getActionCommand().equals("Cancel")) {
               frame1.dispose();
            }

      }
   }// end

   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()) <= limit) {
            super.insertString(offset, str, attr);
         }
      }
   }
   public static void main(String[] args) {
      new MainGUI();
   }
}
导入java.awt.BorderLayout;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.GridLayout;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入java.awt.event.KeyListener;
导入java.io.FileNotFoundException;
导入java.io.PrintWriter;
导入javax.swing.*;
导入javax.swing.event.ListSelectionEvent;
导入javax.swing.event.ListSelectionListener;
导入javax.swing.text.AttributeSet;
导入javax.swing.text.BadLocationException;
导入javax.swing.text.PlainDocument;
公共类MainGUI扩展JFrame{
//声明变量:
//数组列表
String[]columnNames={“ID”、“姓名”、“课程”、“教授”、“导师原因”};
对象[][]数据=新对象[25][5];
//桌子
JTable table=新的JTable(数据、列名){
//设置要由用户编辑的单元格的功能
@凌驾
公共布尔值可编辑(int行,int列){
return false;//返回false,不可编辑
}
};
//框架
JFrame-frame,frame1;
//面板
JPanel buttonPanel、buttonPanel2、tablePanel、addPanel、editPanel;
//标签
JLabel labelID,labelName,labelCourse,labelProfessor,labelHelp;
//文本字段
JTextField txtID,txtName,txtCourse,txtProfessor,txtchelp;
//钮扣
JButton btnAdd、btnEdit、btnDelete、btsensort、btnSave、btnAddInput、btnCancel;
//额外的
int键码、行索引、行编号、noofstudent;
//按钮处理器
MainGUI.ButtonHandler bh=新的MainGUI.ButtonHandler();
公共MainGUI(){
//设置/修改表格组件
表.setSelectionMode(ListSelectionModel.SINGLE_选择);
table.getSelectionModel().addListSelectionListener(新的MainGUI.RowListener());
table.getColumnModel().getColumn(1).setPreferredWidth(200);
table.getColumnModel().getColumn(3).setPreferredWidth(100);
table.getColumnModel().getColumn(4).setPreferredWidth(200);
table.getTableHeader().SetResizenGallowed(false);
table.getTableHeader().setReorderingAllowed(false);
JScrollPane scrollPane=新的JScrollPane(表);
//主按钮
btnAdd=新按钮(“添加”);
btnAdd.addActionListener(bh);
btnEdit=新的JButton(“编辑”);
btnEdit.addActionListener(bh);
btnEdit.setEnabled(false);//禁用组件
btnDelete=新的JButton(“删除”);
btnDelete.addActionListener(bh);
btnDelete.setEnabled(false);//禁用组件
btnSort=新的JButton(“排序”);
bSensor.addActionListener(bh);
btnSave=新的JButton(“保存”);
btnSave.addActionListener(bh);
btnSave.setActionCommand(“保存”);
//使用按钮侦听器
//子按钮
btnAddInput=新按钮(“添加”);
btnAddInput.addActionListener(bh);
btnAddInput.setActionCommand(“AddInput”);
btnCancel=新的JButton(“取消”);
btnCancel.addActionListener(bh);
//设置标签名称
labelID=新的JLabel(“ID”);
labelName=新的JLabel(“名称”);
labelCourse=新的JLabel(“课程”);
labelProfessor=新的JLabel(“教授”);
labelHelp=new JLabel(“辅导原因”);
//设置文本字段宽度
txtID=新的JTextField(20);
txtName=新的JTextField(20);
txtCourse=新的JTextField(20);
txtProfessor=新JTextField(20);
txtHelp=新的JTextField(20);
txtID.setDocument(新MainGUI.JTextFieldLimit(15));//限制输入的长度:
//最多15个
addKeyListener(keyListener);//只接受数字
//主机架
//桌子的面板
tablePanel=新的JPanel();
tablePanel.setLayout(新的BoxLayout(tablePanel,BoxLayout.PAGE_轴));
tablePanel.setBorder(BorderFactory.createEmptyByOrder(10,2,0,10));
tablePanel.add(table.getTableHeader());
tablePanel.add(表);
//主按钮的面板
buttonPanel=新的JPanel();
setLayout(新的GridBagLayout());
GridBagConstraints c=新的GridBagConstraints();
//定位主按钮
c、 gridx=0;
c、 gridy=0;
c、 ipady=20;
c、 插图=新插图(10,10,10,10);
c、 填充=GridBagConstraints.HORIZONTAL;
按钮面板添加(btnAdd,c);
c、 gridx=0;
c、 gridy=1;
c、 填充=GridBagConstraints.HORIZONTAL;
c、 ipady=20;
c、 插图=新插图(10,10,10,10);
按钮面板添加(btnEdit,c);
c、 gridx=0;
c、 gridy=2;
c、 填充=GridBagConstraints.HORIZONTAL;
c、 ipady=20;
c、 插图=新插图(10,10,10,10);
按钮面板添加(btnDelete,c);
c、 gridx=0;
c、 gridy=3;
c、 ipady=20;
c、 插图=新插图(10,10,10,10);
c、 填充=GridBagConstraints.HORIZONTAL;
按钮面板添加(b传感器,c);
c、 gridx=0;
c、 gridy=4;
c、 ipady=20;
c、 插图=新插图(10,10,10,10);
c、 填充=GridBagConstraints.HORIZONTAL;
按钮面板添加(btnSave,c);
frame=新JFrame(“学生数据库”);
frame.setVisible(true);
frame.setresizeable(false);
frame.setDefaultCloseOperation(关闭时退出);
frame.add(tablePanel,BorderLayout.CENTER);
框架。添加(按钮面板,边框布局。东);
frame.pack();
//添加帧
//用于添加的面板
addPanel=newjpanel();
addPanel.setLayout(新的GridBagLayout());
//
else if(e.getActionCommand().equals("Save")){
        try {
            PrintWriter out = new PrintWriter("filename.txt");
            out.println(txtID.getText());
            out.println(txtName.getText());
            out.println(txtCourse.getText());
            out.println(txtProfessor.getText());
            out.println(txtHelp.getText()); 
            out.flush();

        } catch (FileNotFoundException ex) {
        }
    }
/**
 * Prints a String and then terminates the line.  This method behaves as
 * though it invokes <code>{@link #print(String)}</code> and then
 * <code>{@link #println()}</code>.
 *
 * @param x the <code>String</code> value to be printed
 */
public void println(String x) {
    synchronized (lock) {
        print(x);
        println();
    }
}
/**
 * Prints a string.  If the argument is <code>null</code> then the string
 * <code>"null"</code> is printed.  Otherwise, the string's characters are
 * converted into bytes according to the platform's default character
 * encoding, and these bytes are written in exactly the manner of the
 * <code>{@link #write(int)}</code> method.
 *
 * @param      s   The <code>String</code> to be printed
 */
public void print(String s) {
    if (s == null) {
        s = "null";
    }
    write(s);
}