我将如何保存/加载Jbuttons的此配置



这就是我将所有jbuttons添加到面板和arraylist

的方式
  private ArrayList<JButton> b;
  String defaultLogo = "O";

  for(int i=0; i<81;i++)
  {
      b.add(new JButton(defaultLogo));
      b.get(i).addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            for (int i = 0; i < b.size(); i++){
                if (e.getSource() == b.get(i)){
                    b.get(i).setText(getSymbol());
                    b.get(i).setForeground(getColor());
                    b.get(i).setBackground(getBackColor());
                }
            }
        }
      });
      tilePanel.add(b.get(i));
  }

该程序允许用户选择符号,背景颜色和前景颜色,当按下每个jbutton时,它会更改为所选符号,前景颜色和背景颜色。

我希望能够使用dataoutputstream和datainputstream保存JButton配置。我有两个操作侦听器连接到保存和加载按钮上,这些按钮在按下时会激活保存和加载方法。我应该在每种方法中写些什么,允许用户保存和加载JButton配置的文件。

save = new JMenuItem("Save");
  file.add(save);
  save.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==save){
            save();
        }
    }
  });
  load = new JMenuItem("Load");
  file.add(load);
  load.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == load){
            load();
        }
    }
    });

这是该程序运行时的图像

和另一个

您可以尝试序列化,保存保存按钮的对象。

这是一个示例:

保存数据的对象

import java.io.Serializable;
import java.util.ArrayList;
public class Config implements Serializable {
    private static final long serialVersionUID = 1L;
    private ArrayList<String[]> Data;
    public Config(){
        Data=new ArrayList<String>();
    }
    public void addData(String path){
        Data.add(path);
    }
    public String getData(int index){
        return Data.get(index);
    }
}

用于序列化:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.file.Paths;
import java.io.File;
public class FileSerial {
    private FileSerial(){}
    public static Config deserialize(){
        Config result;
        try {
            FileInputStream fis = new FileInputStream(Paths.get("path to your file"));
            ObjectInputStream ois = new ObjectInputStream(fis);
            result = (Config) ois.readObject();
            ois.close();
        } catch (Exception e){
            e.printStackTrace();
    }
        return result;
    }
    public static void serialize(Config obj){
        try {
            File file = new File(Paths.get("path to file"));
            if(!file.exists()){
                file.getParentFile().mkdirs();
            }
            FileOutputStream fos = new FileOutputStream(path.toString());
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(obj);
            oos.close();
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

序列化对象的文件名应具有扩展名。

相关内容

  • 没有找到相关文章

最新更新