2016-05-10 63 views
0

我有我的ProfileInput類來存儲來自對話框的JTextField輸入。然後我將它傳遞給setter和getter方法。從那裏我調用AppFrame類中的setter和getter方法。無法讓JLabel顯示JTextField輸入

我遇到的問題是當我希望輸入在GUI上顯示爲JLabel時,什麼都沒有顯示出來。我沒有運行代碼時顯示的錯誤。任何關於我做錯了什麼的想法。

請注意,我是Java新手,正在努力學習。任何改進任何想法/幫助也很棒。

ProfileInput類

package GUI; 

//Library imports 
import java.awt.Dialog; 
import java.awt.Frame; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 


public class ProfileInput extends Dialog { 


    //array for the active drop down box 
    String[] activeLabels = {"Select One", "Not Active", "Slightly Active", "Active", "Very Active"}; 

    public String firstNameString; 


    //intilizing aspects used in the user profile dialog box 
    JPanel Panel = new JPanel(); 
    JButton saveButton = new JButton("Save"); 
    JLabel firstName = new JLabel("First Name: "); 
    JLabel lastName = new JLabel("Last Name: "); 
    JLabel age = new JLabel("Age: "); 
    JLabel weight = new JLabel("Weight: "); 
    JLabel height = new JLabel("Height: "); 
    JLabel weightGoal = new JLabel("Weight Goal: "); 
    JLabel activeLevel = new JLabel("Active Level: "); 
    JLabel completion = new JLabel("Completion By: "); 
    JTextField firstNameInput = new JTextField(); 
    JTextField lastNameInput = new JTextField(); 
    JTextField ageInput = new JTextField(); 
    JTextField weightInput = new JTextField(); 
    JTextField heightInputFeet = new JTextField(); 
    JTextField heightInputInches = new JTextField(); 
    JTextField weightGoalInput = new JTextField(); 
    JComboBox activeCombo = new JComboBox(activeLabels); 
    JTextField completionInput = new JTextField(); 


    //setup of the dialog panel 
    public ProfileInput(Frame parent) { 

     super(parent,true); 
     userProfileInput(); 
     setSize(315, 380); 
     setTitle("Profile Creator"); 
     setLocationRelativeTo(null); 

    } 

    public void userProfileInput() { 

     //sets up the main panel for the dialog box (only panel to add to) 
     Panel.setBorder(BorderFactory.createEmptyBorder(1,1,1,1)); 
     Panel.setLayout(null); 


     //sets the location of the aspects inside the panel 
     firstName.setBounds(35, 15, 150, 20); 
     lastName.setBounds(35, 50, 150, 20); 
     firstNameInput.setBounds(115, 15, 150, 20); 
     lastNameInput.setBounds(115, 50, 150, 20); 
     age.setBounds(35, 85, 120, 20); 
     ageInput.setBounds(115, 85, 150, 20); 
     weight.setBounds(35, 115, 150, 20); 
     weightInput.setBounds(115, 115, 150, 20); 
     height.setBounds(35, 150, 150, 20); 
     heightInputFeet.setBounds(115, 150, 72, 20); 
     heightInputInches.setBounds(193, 150, 72, 20); 
     weightGoal.setBounds(35, 185, 150, 20); 
     weightGoalInput.setBounds(115, 185, 150, 20); 
     activeLevel.setBounds(35, 220, 150, 20); 
     activeCombo.setBounds(115,220, 150, 20); 
     completion.setBounds(35, 255, 150, 20); 
     completionInput.setBounds(130, 255, 120, 20);  
     saveButton.setBounds(135, 310, 65, 20); 


     saveButton.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent e) { 

       //converts the inputs to a string 
       firstNameString = firstNameInput.getText(); 


       System.out.println(firstNameString); 

      } 
     }); 



     //adds the items to the main panel on the dialog box 
     Panel.add(firstName, null); 
     Panel.add(lastName, null); 
     Panel.add(firstNameInput, null); 
     Panel.add(lastNameInput, null); 
     Panel.add(age, null); 
     Panel.add(ageInput, null); 
     Panel.add(weight, null); 
     Panel.add(weightInput, null); 
     Panel.add(height, null); 
     Panel.add(heightInputFeet, null); 
     Panel.add(heightInputInches, null); 
     Panel.add(weightGoal, null); 
     Panel.add(weightGoalInput, null); 
     Panel.add(activeLevel, null); 
     Panel.add(activeCombo, null); 
     Panel.add(completion, null); 
     Panel.add(completionInput, null); 
     Panel.add(saveButton, null); 


     //adds the panel to the dialog frame 
     add(Panel); 

    }//end of userProfileInput method 


    public String getFirstName() { 
     return this.firstNameString; 
    } 

    public void setFirstName(String firstNameString) { 
     this.firstNameString = firstNameString; 
    } 

} 

AppFrame類

public class AppFrame extends JFrame { 

     private static final long serialVersionUID = 1L; 

     ProfileInput profileInput = new ProfileInput(null); 
     String firstNameTest = profileInput.getFirstName(); 

     /** 
     * Starts the frame from AppFrame method below. 
     * 
     * @param args 
     */ 
     public static void main(String[] args) { 

      new AppFrame().setVisible(true); 

     }//end of main Method 


     /** 
     * 
     * 
     */ 
     private AppFrame() {   

      //Initialization of panels and bars used in the main app 
      JMenuBar menuBar = new JMenuBar(); 
      JPanel contentPane = new JPanel(new BorderLayout()); 
      JPanel rightPanel = new JPanel(); 
      JPanel profileInfo = new JPanel(); 

      //aspects used in the left toolbar panel 
      JToolBar toolBarPanel = new JToolBar(); 
      JButton bloodPressureTool = new JButton(); 
      JButton heartRateTool = new JButton(); 
      JButton weightTool = new JButton(); 
      JButton bmiTool = new JButton(); 
      JButton medicationTool = new JButton(); 
      JButton appointmentTool = new JButton(); 
      JButton noteTool = new JButton(); 
      JButton profileTool = new JButton(); 
      Border etched = BorderFactory.createEtchedBorder(); 
      Icon bloodPIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/BloodPressure.png"); 
      Icon heartRateIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/HeartRate.png"); 
      Icon weightIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/Weight.png"); 
      Icon bmiIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/BMI.png"); 
      Icon medicationIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/Medications.png"); 
      Icon appointmentIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/DoctorAppointment.png"); 
      Icon noteIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/Notes.png"); 
      Icon profileIcon = new ImageIcon("/Users/BrandonGrow/git/Health-Application/src/Icons/Profile.png"); 


      //aspects of the user profile panel 
      JLabel firstName = new JLabel("First Name: "); 
      JLabel lastName = new JLabel("Last Name: "); 
      JLabel height = new JLabel("Height: "); 
      JLabel weight = new JLabel("Weight: "); 
      JLabel age = new JLabel("Age: "); 
      JLabel weightGoal = new JLabel("Weight Goal: "); 
      JLabel activeLevel = new JLabel("Active Level: "); 
      JLabel completion = new JLabel("Completion Date: "); 


      //Menu Bar Headers 
      JMenu file = new JMenu("File"); 
      JMenu go = new JMenu("Go"); 
      JMenu help = new JMenu("Help"); 


      //file drop down 
      JMenuItem newEntry = new JMenuItem("Profile Creator"); 
      JMenuItem exportReport = new JMenuItem("Export Report"); 
      JMenuItem exportNotes = new JMenuItem("Export Notes"); 
      JMenuItem preferences = new JMenuItem("Preferences"); 
      JMenuItem exit = new JMenuItem("Exit"); 
      file.add(newEntry); 
      file.addSeparator(); 
      file.add(exportReport); 
      file.addSeparator(); 
      file.add(exportNotes); 
      file.addSeparator(); 
      file.add(preferences); 
      file.addSeparator(); 
      file.add(exit); 


      //action used when the user presses the enter profile input button 
      newEntry.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 

        profileInput.setVisible(true); 

       } 
      }); 


      //allows for the program to exit when exit is clicked 
      exit.addActionListener(new ActionListener(){ 
       public void actionPerformed(ActionEvent e) { 

         exitDialog(); 
       } 
      }); 


      //go drop down 
      JMenuItem bloodPressure = new JMenuItem("Blood Pressure"); 
      JMenuItem heartRate = new JMenuItem("Heart Rate"); 
      JMenuItem medication = new JMenuItem("Medication"); 
      JMenuItem weightDisplay = new JMenuItem("Weight"); 
      JMenuItem bmi = new JMenuItem("BMI"); 
      JMenuItem docAppoints = new JMenuItem("Doctor's Appointments"); 
      JMenuItem notes = new JMenuItem("Notes"); 
      JMenuItem resources = new JMenuItem("Profile"); 
      go.add(bloodPressure); 
      go.addSeparator(); 
      go.add(heartRate); 
      go.addSeparator(); 
      go.add(medication); 
      go.addSeparator(); 
      go.add(weight); 
      go.addSeparator(); 
      go.add(bmi); 
      go.addSeparator(); 
      go.add(docAppoints); 
      go.addSeparator(); 
      go.add(notes); 
      go.addSeparator(); 
      go.add(resources); 


      //help drop down 
      JMenuItem usersGuide = new JMenuItem("Users Guide"); 
      JMenuItem about = new JMenuItem("About Personal Health Application"); 
      help.add(usersGuide); 
      help.addSeparator(); 
      help.add(about); 


      //adds Items to Frame 
      menuBar.add(file); 
      menuBar.add(go); 
      menuBar.add(help); 
      setJMenuBar(menuBar); 


      //Panel that allows for all GUI to be ad added here 
      contentPane.setBorder(BorderFactory.createEmptyBorder(1,1,1,1)); 
      contentPane.setBackground(Color.WHITE); 
      contentPane.add(toolBarPanel, BorderLayout.WEST); 
      contentPane.add(rightPanel); 


      //stores the buttons for application (left) 
      toolBarPanel.setOrientation(JToolBar.VERTICAL); 
      toolBarPanel.setBackground(Color.white); 
      toolBarPanel.setFloatable(false);; 
      toolBarPanel.setBorder(etched); 


      //sets the large panel on the right side of the frame. 
      rightPanel.setBackground(Color.WHITE); 
      rightPanel.setBorder(etched); 
      rightPanel.setLayout(null); 
      rightPanel.add(profileInfo, null); 


      //adds the user profile info to the main screen 
      profileInfo.setBounds(0, 0, 1104, 100); 
      profileInfo.setBackground(Color.WHITE); 
      profileInfo.setLayout(null); 
      profileInfo.setBorder(etched); 

      firstName.setBounds(80, 10, 80, 20); 
      firstName.setFont(new java.awt.Font("Dialog", 1, 11)); 
      lastName.setBounds(80, 50, 80, 20); 
      lastName.setFont(new java.awt.Font("Dialog", 1, 11)); 
      weightDisplay.setBounds(310, 10, 80, 20); 
      weightDisplay.setFont(new java.awt.Font("Dialog", 1, 11)); 
      height.setBounds(330, 50, 80, 20); 
      height.setFont(new java.awt.Font("Dialog", 1, 11)); 
      age.setBounds(550, 10, 80, 20); 
      age.setFont(new java.awt.Font("Dialog", 1, 11)); 
      weightGoal.setBounds(550, 50, 80, 20); 
      weightGoal.setFont(new java.awt.Font("Dialog", 1, 11)); 
      activeLevel.setBounds(780, 10, 80, 20); 
      activeLevel.setFont(new java.awt.Font("Dialog", 1, 11)); 
      completion.setBounds(780, 50, 120, 20); 
      completion.setFont(new java.awt.Font("Dialog", 1, 11)); 

      //test to see if first name displays 
      JLabel firstNameInputTest = new JLabel(firstNameTest); 
      firstNameInputTest.setBounds(160, 10, 80, 20); 


      profileInfo.add(firstName); 
      profileInfo.add(lastName); 
      profileInfo.add(weightDisplay); 
      profileInfo.add(height); 
      profileInfo.add(age); 
      profileInfo.add(weightGoal); 
      profileInfo.add(completion); 
      profileInfo.add(activeLevel); 

//part of test to see of first name displays 
      profileInfo.add(firstNameInputTest); 


      //blood pressure button 
      bloodPressureTool.setMaximumSize(new Dimension(90, 80)); 
      bloodPressureTool.setMinimumSize(new Dimension(30, 30)); 
      bloodPressureTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      bloodPressureTool.setPreferredSize(new Dimension(90, 50)); 
      bloodPressureTool.setBorderPainted(false); 
      bloodPressureTool.setContentAreaFilled(false); 
      bloodPressureTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      bloodPressureTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      bloodPressureTool.setText("Blood Pressure"); 
      bloodPressureTool.setOpaque(false); 
      bloodPressureTool.setMargin(new Insets(0, 0, 0, 0)); 
      bloodPressureTool.setSelected(true); 
      bloodPressureTool.setIcon(bloodPIcon); 


      //heart rate button 
      heartRateTool.setMaximumSize(new Dimension(90, 80)); 
      heartRateTool.setMinimumSize(new Dimension(30, 30)); 
      heartRateTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      heartRateTool.setPreferredSize(new Dimension(90, 50)); 
      heartRateTool.setBorderPainted(false); 
      heartRateTool.setContentAreaFilled(false); 
      heartRateTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      heartRateTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      heartRateTool.setText("Heart Rate"); 
      heartRateTool.setOpaque(false); 
      heartRateTool.setMargin(new Insets(0, 0, 0, 0)); 
      heartRateTool.setSelected(true); 
      heartRateTool.setIcon(heartRateIcon); 


      //weight button 
      weightTool.setMaximumSize(new Dimension(90, 80)); 
      weightTool.setMinimumSize(new Dimension(30, 30)); 
      weightTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      weightTool.setPreferredSize(new Dimension(90, 50)); 
      weightTool.setBorderPainted(false); 
      weightTool.setContentAreaFilled(false); 
      weightTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      weightTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      weightTool.setText("Weight"); 
      weightTool.setOpaque(false); 
      weightTool.setMargin(new Insets(0, 0, 0, 0)); 
      weightTool.setSelected(true); 
      weightTool.setIcon(weightIcon); 


      //BMI button 
      bmiTool.setMaximumSize(new Dimension(90, 80)); 
      bmiTool.setMinimumSize(new Dimension(30, 30)); 
      bmiTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      bmiTool.setPreferredSize(new Dimension(90, 50)); 
      bmiTool.setBorderPainted(false); 
      bmiTool.setContentAreaFilled(false); 
      bmiTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      bmiTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      bmiTool.setText("BMI"); 
      bmiTool.setOpaque(false); 
      bmiTool.setMargin(new Insets(0, 0, 0, 0)); 
      bmiTool.setSelected(true); 
      bmiTool.setIcon(bmiIcon); 


      //medication button 
      medicationTool.setMaximumSize(new Dimension(90, 80)); 
      medicationTool.setMinimumSize(new Dimension(30, 30)); 
      medicationTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      medicationTool.setPreferredSize(new Dimension(90, 50)); 
      medicationTool.setBorderPainted(false); 
      medicationTool.setContentAreaFilled(false); 
      medicationTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      medicationTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      medicationTool.setText("Medication"); 
      medicationTool.setOpaque(false); 
      medicationTool.setMargin(new Insets(0, 0, 0, 0)); 
      medicationTool.setSelected(true); 
      medicationTool.setIcon(medicationIcon); 


      //appointment button 
      appointmentTool.setMaximumSize(new Dimension(90, 80)); 
      appointmentTool.setMinimumSize(new Dimension(30, 30)); 
      appointmentTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      appointmentTool.setPreferredSize(new Dimension(90, 50)); 
      appointmentTool.setBorderPainted(false); 
      appointmentTool.setContentAreaFilled(false); 
      appointmentTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      appointmentTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      appointmentTool.setText("Appointments"); 
      appointmentTool.setOpaque(false); 
      appointmentTool.setMargin(new Insets(0, 0, 0, 0)); 
      appointmentTool.setSelected(true); 
      appointmentTool.setIcon(appointmentIcon); 


      //note button 
      noteTool.setMaximumSize(new Dimension(90, 80)); 
      noteTool.setMinimumSize(new Dimension(30, 30)); 
      noteTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      noteTool.setPreferredSize(new Dimension(90, 50)); 
      noteTool.setBorderPainted(false); 
      noteTool.setContentAreaFilled(false); 
      noteTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      noteTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      noteTool.setText("Notes"); 
      noteTool.setOpaque(false); 
      noteTool.setMargin(new Insets(0, 0, 0, 0)); 
      noteTool.setSelected(true); 
      noteTool.setIcon(noteIcon); 


      //profile button 
      profileTool.setMaximumSize(new Dimension(90, 80)); 
      profileTool.setMinimumSize(new Dimension(30, 30)); 
      profileTool.setFont(new java.awt.Font("Dialog", 1, 10)); 
      profileTool.setPreferredSize(new Dimension(90, 50)); 
      profileTool.setBorderPainted(false); 
      profileTool.setContentAreaFilled(false); 
      profileTool.setVerticalTextPosition(SwingConstants.BOTTOM); 
      profileTool.setHorizontalTextPosition(SwingConstants.CENTER); 
      profileTool.setText("Profile"); 
      profileTool.setOpaque(false); 
      profileTool.setMargin(new Insets(0, 0, 0, 0)); 
      profileTool.setSelected(true); 
      profileTool.setIcon(profileIcon); 


      //adding buttons to toolBarPanel 
      toolBarPanel.add(bloodPressureTool); 
      toolBarPanel.add(heartRateTool); 
      toolBarPanel.add(weightTool); 
      toolBarPanel.add(bmiTool); 
      toolBarPanel.add(medicationTool); 
      toolBarPanel.add(appointmentTool); 
      toolBarPanel.add(noteTool); 
      toolBarPanel.add(profileTool); 


      //sets up the actual frame 
      setSize(1200,800); 
      setResizable(false); 
      setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
      add(contentPane); 


      //allows for the program to shut down by using x and then using the dialog 
      addWindowListener(new WindowAdapter() { 
       public void windowClosing(WindowEvent e) { 
        exitDialog(); 
       } 
      }); 

     }//end of appFrame Method 
+0

你''JLabel' fistNameInputTest'沒有顯示出來,因爲''String' firstNameTest '是空的。你可以在你的AppFrame類中調用'getFirstName()',但是在初始化期間,你的'ProfileInput'類中的唯一值'firstNameString'可能是'null'。要解決這個問題,你可能需要在創建新配置文件後更新'firstNameInputTest'的文本。 – MasterBlaster

+0

請參閱編輯以回答。如有問題,請詢問。 –

回答

1

你有幾個問題與上面的代碼,但最重要的,您使用的是無模式對話框時,你絕對需要使用一個模態。由於它是無模式的,因此當對話框變爲可見時,呼叫代碼中的程序流程不會停止,因此您在對話框上立即呼叫getFirstName(),它在打開之後,關閉之前以及在用戶之前有機會輸入任何信息。另一方面,模態對話框將凍結調用代碼中的程序流,並且程序流將不會恢復,直到該對話框不再可見爲止。

問題與建議:

  • 首先,確保對話窗口是模式對話框。
  • 但是在此之前,不要使用Dialog,Panel和其他AWT組件類,而要使用Swing類 - JDialog,JPanel等。
  • 您可以使用適當的構造函數將JDialog設置爲模態,在相應的構造函數中傳入ModalityType.APPLICATION_MODAL作爲參數(請參閱API),或者您可以通過方法進行設置。
  • 無論哪種方式,請確保在設置對話框可見之前設置它。
  • 這樣做,並且當您查詢對話框的狀態時,您可以確信用戶至少有機會與對話進行交互,然後嘗試從中提取信息。
  • 確保在查看對話框並將結果設置爲可見後分配結果。

編輯,我現在是你打電話String firstNameTest = profileInput.getFirstName();看到即使設置對話框中可見之前,彷彿firstNameTest字符串,這是在這個階段顯然空,會奇蹟般地一旦對話已經顯現更新並處理,但對不起,Java沒有什麼魔力,而且字段不會自行更新。同樣,不要在那一刻設置firstNameTest字段,而只能在對話框顯示並處理之後。


下一步我們需要談談null佈局和setBounds。你真的不想走這條路,相信我。



例如:

public class AppFrame extends JFrame { 

    private static final long serialVersionUID = 1L;  
    // !! the JLabel needs to be a field so it can be set in the ActionListener 
    private JLabel firstNameInputTest = new JLabel(""); 
    private ProfileInput profileInput = null; //!! let this start out as null 
    // !! worthless code, get rid of 
    // String firstNameTest = profileInput.getFirstName(); 

    public static void main(String[] args) { 
     // .... etc 

而且ActionListener的地方,我們創建/顯示對話框:

newEntry.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     //!! create JDialog in a lazy fashion 
     if (profileInput == null) { 
      // create dialog, passing in the JFrame 
      profileInput = new ProfileInput(AppFrame.this); 
     } 
     profileInput.setVisible(true); // display the *modal* dialog 

     // program flow is frozen here until JDialog is no longer visible 

     // query dialog for its contents 
     String firstNameTxt = profileInput.getFirstName(); 
     // and use in GUI 
     firstNameInputTest.setText(firstNameTxt); 
    } 
}); 

我們不希望一個方法內聲明的JLabel或者構造函數,因爲這樣做在整個課程中都是不可見的。所以......

private AppFrame() { // ??? private ??? 

    // ..... 


    // test to see if first name displays 
    // !! JLabel firstNameInputTest = new JLabel(firstNameTest); // No!!! 

最後,一個很簡單的例子的JDialog證明什麼,我討論:

@SuppressWarnings("serial") 
public class ProfileInput extends JDialog { 
    private JTextField firstNameField = new JTextField(10); 

    public ProfileInput(JFrame frame) { 
     // make it modal! 
     super(frame, "Profile Input", ModalityType.APPLICATION_MODAL); 

     JPanel panel = new JPanel(); 
     panel.add(new JLabel("Enter First Name:")); 
     panel.add(firstNameField); 
     panel.add(new JButton(new SubmitAction("Submit", KeyEvent.VK_S))); 

     add(panel); 
     pack(); 
     setLocationRelativeTo(frame); 
    } 

    public String getFirstName() { 
     return firstNameField.getText(); 
    } 

    private class SubmitAction extends AbstractAction { 
     public SubmitAction(String name, int mnemonic) { 
      super(name); 
      putValue(MNEMONIC_KEY, mnemonic); 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      ProfileInput.this.dispose(); 
     } 
    } 
}  
+0

你非常喜歡這個信息。我一定會經歷你所有的想法。我真的很感謝你的幫助。我想學習最佳實踐。一旦完成,我將重新發布我的代碼。再次,這是幫助! – user3320746