0

MACアドレスを外部ファイルに保存するJavaプログラムを作成しました。以下はコードです:

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);
        }
    }

ありがとうございました。

4

1 に答える 1

5

作業メソッドをメソッドにコピーしてactionPerformedスワップします。

out.write(in.readLine());

為に:

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

try次に、その多くを/でラップしcatchます。

于 2012-04-22T18:32:04.937 に答える