2012-04-22 90 views
0

我已經創建了一個Java程序來將MAC地址保存到外部文件。以下是代碼:Java Swing中的問題

import java.io.*; 

public class MAC{ 

public static void main(String[] args) throws IOException{ 
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.print("Enter the MAC Addres : "); 
    File file = new File("mac.txt"); 

    FileWriter fstream = new FileWriter("mac.txt",true); 
    BufferedWriter out = new BufferedWriter(fstream); 

    out.write(in.readLine()); 
    out.newLine(); 
    out.close();  
    } 
} 

我也創建了一個Swing應用程序。我完成了前端,但現在我無法使用swing將MAC地址保存到外部文件。

在我的ActionListener中,我得到的值,但我不知道如何將細節保存到外部文件。

我能夠將ActionListener值打印到屏幕上,但我希望將它保存在外部文件中。

import java.awt.BorderLayout; 
    import java.awt.FlowLayout; 
    import java.awt.GridLayout; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
    import javax.swing.JButton; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JPanel; 
    import javax.swing.JTextField; 


    import java.io.*; 

    public class TextForm extends JPanel { 

     private JTextField[] fields; 

     // Create a form with the specified labels, tooltips, and sizes. 
     public TextForm(String[] labels, int[] widths) { 
      super(new BorderLayout()); 
      JPanel labelPanel = new JPanel(new GridLayout(labels.length, 1)); 
      JPanel fieldPanel = new JPanel(new GridLayout(labels.length, 1)); 
      add(labelPanel, BorderLayout.WEST); 
      add(fieldPanel, BorderLayout.CENTER); 
      fields = new JTextField[labels.length]; 

      for (int i = 0; i < labels.length; i += 1) { 
       fields[i] = new JTextField(); 
       if (i < widths.length) 
        fields[i].setColumns(widths[i]); 

       JLabel lab = new JLabel(labels[i], JLabel.RIGHT); 
       lab.setLabelFor(fields[i]); 

       labelPanel.add(lab); 
       JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
       p.add(fields[i]); 
       fieldPanel.add(p); 
      } 
    } 

     public String getText(int i) { 
      return (fields[i].getText()); 
     } 

     public static void main(String[] args) { 
      String[] labels = { "Enter MAC Address : "}; 
      int[] widths = { 17 }; 
      final TextForm form = new TextForm(labels, widths); 
      JButton submit = new JButton("Submit"); 
      submit.addActionListener(new ActionListener() { 

       public void actionPerformed(ActionEvent e) { 
        System.out.println(form.getText(0)); 

       } 
      }); 

      JFrame f = new JFrame("Text Form Example"); 
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      f.getContentPane().add(form, BorderLayout.NORTH); 
      JPanel p = new JPanel(); 
      p.add(submit); 
      f.getContentPane().add(p, BorderLayout.SOUTH); 
      f.pack(); 
      f.setVisible(true); 
     } 
    } 

謝謝。

+0

順便說一句1)在這種情況下不需要擴展面板。 2)這個GUI將更適合在'JOptionPane.showInputDialog()'中顯示。3)不要忘記提出一個問題。 – 2012-04-22 18:33:58

+1

你的主題標題應該總結一下當前的問題,而不是一般性的幫助請求。當然你需要幫助,每個在這裏發佈問題的人都需要幫助,但爲什麼不在問題標題中告訴我們問題是什麼。例如「如何將MAC地址保存到文件」等等。做到這一點,你會讓你的問題專家的興趣高漲,結果你可能會更快得到更好的幫助。還要注意,你甚至不必提及「Java」或「Swing」,因爲java和swing標籤會爲你提供幫助。運氣。 – 2012-04-22 18:54:48

回答

5

將工作方法複製到actionPerformed方法和交換。

out.write(in.readLine()); 

爲:

out.write(form.getText(0)); 

然後包裹很多它在try/catch

+4

@Rohith「歡迎您對此發表評論並支持我......」嗯,我會說你已經在這裏得到了一流的待遇。那麼,如何回覆這個優點並接受這個成功和點滴答案呢?或者至少如果你認爲它有什麼問題可以發表評論? – 2012-04-22 19:06:16

+0

@Andrew Thompson, 謝謝 – Rohith 2012-06-06 06:41:20

+0

不客氣。如果我的答案幫助你解決了這個問題,請在你有機會時請[接受](http://meta.stackexchange.com/a/65088/155831)。 – 2012-06-06 06:46:25