如何保存Java对象和IO

时间:2018-12-01 01:23:29

标签: java swing serialization

此HashMap是我要保存并传输给其他人的信息。

HashMap<String,City> labelMap;

城市对象具有ArrayList

    class City implements Serializable{
            ArrayList<Marker> markerList;
    City(){
        markerList = new ArrayList<Marker>();
    }

    public void setMarker(Marker marker) {
        markerList.add(marker);
    }
}

并且Marker类是JLabel对象

class Marker extends JLabel implements Serializable{

ImageIcon image;

private Point point;
private String textString;



Marker(Point point, String textString){

    this.point = point;
    this.textString = textString;
    image = new ImageIcon(Toolkit.getDefaultToolkit().getImage("Icon/marker.png"));
    setIcon(image);
}

public Point getPoint() {
    return point;
}

public void setPoint(Point point) {
    this.point = point;
}

public String getTextString() {
    return textString;
}

public void setTextString(String textString) {
    this.textString = textString;
 }
}

那么如何将带有上述信息的HashMap保存到文件中,以便我可以加载或稍后发送它?

我尝试使用序列化,但是不起作用。有没有一种方法可以有效地存储基于Swing的程序对象?

最后我解决了。

问题不是基于awt或摆动。

我从Jlabel获得的字符串不是英语,但是它是否是英语也没关系,但是如果它不是英语,那是一个错误。因此,Jlabel.setText =“”;我将Jlabel的文本设置为空白,然后序列化了非英文字符以进行修复。

毕竟,问题出在JLabel.getText上,它需要一个非英语字符并将其序列化

1 个答案:

答案 0 :(得分:0)

最后我哭了。 问题不是基于awt或swing。

我从Jlabel获得的字符串不是英语,它是否是英语也没关系,但是如果它不是英语,则是错误的。因此,Jlabel.setText =“”;我将Jlabel的文本设置为空白,然后序列化了非英文字符以进行修复。

毕竟,问题出在JLabel.getText上,它需要一个非英语字符并将其序列化