0

我创建了一个 Java 程序来将 MAC 地址保存到外部文件。下面是代码:

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 回答