2012-04-22 2 views
0

외부 파일에 MAC 주소를 저장하는 Java 프로그램을 만들었습니다. 아래는 코드입니다.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();  
    } 
} 

나는 또한 스윙 응용 프로그램을 만들었습니다. 프론트 엔드로 끝났지 만 이제 스윙을 사용하여 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

BTW 1)이 경우 패널을 확장 할 필요가 없습니다. 2)이 GUI는 JOptionPane.showInputDialog()에 표시하는 것이 더 낫습니다. 3) 질문하는 것을 잊지 마십시오. –

+1

스레드 제목은 현재 문제를 간단히 요약해야하며 일반적인 도움 요청이 아니어야합니다. 물론 도움이 필요합니다. 여기에 질문을 게시하는 모든 사람들은 도움이 필요합니다. 그러나 문제가 무엇인지 정확하게 질문 제목에 알려주지 마십시오. 예를 들어 "MAC 주소를 파일에 저장하는 방법"또는 그와 같은 것들이 있습니다. 이렇게하면 더 나은 도움을받을 수있는 결과를 얻고 질문에 대한 전문가 인 여러분의 관심을 앗아 갈 것입니다. Java 및 Swing 태그는 사용자를 대신해서 처리하므로 "Java"또는 "Swing"은 말할 필요조차 없습니다. 운. –

답변

5

작업 방법을 actionPerformed 방법으로 복사하고 바꿉니다. 대한

out.write(in.readLine()); 

:

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

는 그런 다음 try/catch에서의 많은 포장.

+4

@Rohith "이 모든 것에 의견을 보내 주시고 저를지지 해 주셔서 감사합니다 ..."글쎄, 당신이 여기에서 일급 치료를 받았다고 말하고 싶습니다. 그래서 부탁을 되 돌리는 것과 succint와 to-the-point 대답을 받아들이는 것은 어떨까요? 또는 문제가 있다고 생각한다면 적어도 댓글을 달아주십시오. –

+0

@Andrew Thompson, 감사합니다. – Rohith

+0

안녕하세요. 내 대답이 문제를 해결하는 데 도움이된다면 기회가 생길 때 [http://meta.stackexchange.com/a/65088/155831] 받아주십시오. –