0

我试图保存上面有 JLabel 的 JTextPane,insertComponent但是当我想通过文件写入器保存 JTextPane 并且在文本文件上缓冲写入时,JLabel 不会出现

这是文本文件中的结果:

 : asdasd
 : adasddasdasdsd
 : asdasda
 : asd
 : asd
 : asd
 : as
 : daaa
 : sdas
 : das
 : d

这是我写的代码:

 BufferedWriter save = new BufferedWriter(new FileWriter(tempfile));

             jtep.write(save);

这是从数据库中获取文本的地方。我将跳转到结果:

while(rs.next())
        {

            try {
                final JLabel jp = new JLabel(rs.getString("username")+ "\n");
                jp.setAlignmentY(0.75f);
                final String usernameChat = rs.getString("username");
                jp.addMouseListener(new MouseListener(){

                    @Override
                    public void mouseClicked(MouseEvent e) {}

                    @Override
                    public void mouseEntered(MouseEvent e) {
                        Cursor c = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
                        jp.setCursor(c);
                    }

                    @Override
                    public void mouseExited(MouseEvent e) {
                    }

                    @Override
                    public void mousePressed(MouseEvent e) {
                        if(SwingUtilities.isRightMouseButton(e)){System.out.print("lawl");}
                        if(e.getClickCount() == 2)new OneToOneChat(usernameChat);


                        jp.setForeground(Color.BLUE);

                    }

                    @Override
                    public void mouseReleased(MouseEvent e) {
                    jp.setForeground(Color.BLACK);

                    }

                });
                jp.setFont(new Font("arial",Font.BOLD,16));
                jtep.insertComponent(jp);
                StyleConstants.setForeground(MainPanel.sas2, Color.BLACK);
                MainPanel.sd.insertString(MainPanel.sd.getLength(), ": ", MainPanel.sas2);
                StyleConstants.setForeground(MainPanel.sas,new Color(Integer.parseInt(rs.getString("color"))));
                sd.insertString(sd.getLength(),rs.getString("message")+ "\n", MainPanel.sas);

java中的结果:

kev : adasddasdasdsd
kev  : asdasda
kev  : asd
kev  : asd
kev  : asd
kev  : as
kev  : daaa
kev  : sdas
kev  : das
kev  : d

为什么 JLabel 不会出现在文本文件中,有没有办法做到这一点?

4

2 回答 2

0

如果我正确理解了您的问题,那么您缺少很多...文本文件旨在存储文本信息。文本编辑器(通常)除了文本不显示任何内容。如果您真的想存储检索JLabel,请将JLabel 的信息存储在一个文本文件中,并使用您自己的程序对其进行解码以将JLabel 显示回来。

如果要存储 JLabel 对象的信息,可以使用 java 序列化写入文件并使用相同的概念检索回来。

一切顺利。

于 2013-05-14T06:52:52.913 回答
0

为什么 JLabel 不会出现在文本文件中

你到底希望出现什么?文本文件包含文本。AJLabel不是文本

如果您希望将标签的文本写入文件,则需要手动执行此操作。

于 2013-05-14T06:27:07.323 回答