Передача значений между двумя формами JPanel в Java Swing.
Я создал 3 класса. 1-й класс используется для хранения переменной. другие классы используются для ввода и отображения данных.
1-й класс
public class Student { /** * @param args the command line arguments */ private String strStudNo; private String strStudName; private int iMaths; private int iScience; private int iEnglish; public String getStrStudNo() { return strStudNo; } public void setStrStudNo(String strStudNo) { this.strStudNo = strStudNo; } public String getStrStudName() { return strStudName; } public void setStrStudName(String strStudName) { this.strStudName = strStudName; } public int getiMaths() { return iMaths; } public void setiMaths(int iMaths) { this.iMaths = iMaths; } public int getiScience() { return iScience; } public void setiScience(int iScience) { this.iScience = iScience; } public int getiEnglish() { return iEnglish; } public void setiEnglish(int iEnglish) { this.iEnglish = iEnglish; } public double calTotal(){ return (getiMaths()+getiScience()+getiEnglish()); } public double calAverage(){ return (calTotal()/3); } public String findGrade(){ String strGrade = new String(); if (calAverage()>70){ strGrade = "A"; }else if(calAverage()>60){ strGrade = "B"; }else if (calAverage()>50){ strGrade = "S"; }else{ strGrade = "Fail"; } return strGrade; } public static void main(String[] args) { // TODO code application logic here } }
2-й класс
Этот класс разработан с использованием объекта Swing JPanel и используется для ввода StudNo, StudName, Marks для 3 предметов. Это также включает в себя 2 кнопки, такие как btnCalculate и btnCancel. Этот пользовательский интерфейс был разработан с использованием Java swing class путем автоматической генерации. Когда btnCalculate щелкает, данные в текстовых полях будут назначены переменным 1-го класса. И там расчеты будут производиться с использованием 3-х методов.
import javax.swing.JFrame; /** * * @author Administrator */ @SuppressWarnings("serial") public class EnterDetails extends javax.swing.JPanel { /** * Creates new form EnterDetails */ public static void main(String[] args) { JFrame oJFrame = new JFrame(); oJFrame.getContentPane().add(new EnterDetails()); oJFrame.setDefaultCloseOperation(oJFrame.EXIT_ON_CLOSE); oJFrame.setSize(500, 500); oJFrame.setVisible(true); } public EnterDetails() { initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JPanelOnJFrameMulti oJpanelOnJFrameMulti = new JPanelOnJFrameMulti(); oJpanelOnJFrameMulti.setStrStudNo(txtStudId.getText()); oJpanelOnJFrameMulti.setStrStudName(txtStudName.getText()); oJpanelOnJFrameMulti.setiMaths(Integer.parseInt(txtMaths.getText())); oJpanelOnJFrameMulti.setiScience(Integer.parseInt(txtScience.getText())); oJpanelOnJFrameMulti.setiEnglish(Integer.parseInt(txtEnglish.getText())); oJpanelOnJFrameMulti.calTotal(); oJpanelOnJFrameMulti.calAverage(); oJpanelOnJFrameMulti.findGrade(); DisplayDetails oDisplayDet = new DisplayDetails(); oDisplayDet.setVisible(true); JFrame oJFDisDet = new JFrame(); oJFDisDet.getContentPane().add(new DisplayDetails()); oJFDisDet.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); oJFDisDet.setSize(500, 500); oJFDisDet.setVisible(true); } // Variables declaration - do not modify private javax.swing.JButton btnCalculate; private javax.swing.JButton btnCancel; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JTextField txtEnglish; private javax.swing.JTextField txtMaths; private javax.swing.JTextField txtScience; private javax.swing.JTextField txtStudId; private javax.swing.JTextField txtStudName; // End of variables declaration }
3-й класс
Другой пользовательский интерфейс, который используется для просмотра окончательных результатов расчетов, то есть общих оценок, средних оценок и оценки. Когда btnCalculate щелкает, результат должен перейти в 3-й класс, то есть класс DisplayInfo JPanel. Моя проблема заключается в том, что когда я нажимаю кнопку btnCalculate, она действительно вычисляет общие оценки, средние оценки и оценку. 3-й класс, то есть форма DisplayInfo JPanel, также будет отображаться, но данные не прошли, текстовые поля были пусты.
Я не знаю, что я сделал не так? Пожалуйста, кто-нибудь может мне помочь.
Обновление
public class DisplayDetails extends JPanel { /** * Creates new form DisplayDetails */ public void load(){ Student oStudent = new Student(); txtStudId.setText(oStudent.getStrStudName()); txtStudId.setText(oStudent.getStrStudNo()); txtTotal.setText(Double.toString(oStudent.calTotal())); txtAverage.setText(Double.toString(oStudent.calAverage())); txtGrade.setText(oStudent.findGrade()); } public DisplayDetails() { initComponents(); } // DisplayDetails. /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> }// </editor-fold> // Variables declaration - do not modify private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JTextField txtAverage; private javax.swing.JTextField txtGrade; private javax.swing.JTextField txtStudId; private javax.swing.JTextField txtStudName; private javax.swing.JTextField txtTotal; // End of variables declaration }
спасибо
Чирантака.