【问题标题】:How can I save Java Object and IO如何保存 Java 对象和 IO
【发布时间】:2018-12-01 01:23:28
【问题描述】:

这个 HashMap 是我想保存并转移给其他人的信息。

HashMap<String,City> labelMap;

City 对象有 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 或 swing 的。

我从jlabel得到的字符串不是英文的,但是如果是英文也没关系,但是如果不是英文就报错了。所以 Jlabel.setText = "";我把Jlabel的文字留空,然后序列化非英文字符来修复。

毕竟,当 JLabel.getText 采用非英文字符并将其序列化时,问题出在 JLabel.getText 上

【问题讨论】:

  • “有没有办法有效地存储基于 Swing 的程序对象?” 方法不是存储组件本身,而是存储内容或状态。例如。对于文本字段,字符串内容。对于复选框,一个布尔值,表示它是否被选中。对于这个自定义标签,pointtextString 这两个属性(可能会创建一个仅包含这两个对象的可序列化 POJO)。顺便说一句 - 我会避免这种形式的序列化以支持 XML。
  • Swing 组件(如JLabel)不可序列化有充分的理由......
  • 您说“我尝试使用序列化,但它不起作用”。请以MCVE 的形式分享您的researchattempt,以及为什么it's not working 包括错误消息和/或堆栈跟踪,以便阅读您问题的人可以更好地帮助您。
  • @D.B.很好的建议,尤其是 "..in MCVE" 的形式。提示:评论中的[mcve] 会自动扩展为minimal reproducible example

标签: java swing serialization


【解决方案1】:

最后我解决了。 问题不是基于 awt 或 swing 的。

我从Jlabel得到的字符串不是英文的,如果是英文也没关系,但如果不是英文就报错了。所以 Jlabel.setText = "";我把Jlabel的文字留空,然后序列化非英文字符来修复。

毕竟,当 JLabel.getText 采用非英文字符并将其序列化时,问题出在 JLabel.getText 上

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多