SWING开发之JTextArea的的中文显示问题


说一个不是问题的问题:

今天在测试JTextArea的时候发现中文显示的不太正确,后来设置成了宋体,显示是可以显示了,但是有乱码:


在网上找了好久也没有找到解决办法,后来我修改myeclipse的字符编码等等操作均无法解决该问题;这个是什么问题呢?

仔细检查了下我的代码,发现了这句:

outTextArea.setFont(new java.awt.Font("宋体", 0, 13));//字体大小设置成了13
一个中文占用两个字节,设置成13显然是不太合适的,中文字体的大小没有单数,于是我改成了14,现在问题解决,显示正常:


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现实时刷新JTextArea,可以使用SwingWorker类来完成。SwingWorker是一个抽象类,可以在后台线程中执行长时间运行的任务,并在完成后更新用户界面。 以下是一个简单的示例代码,用于在JTextArea中实时显示添加的内容: ``` import javax.swing.*; import java.awt.BorderLayout; public class RefreshTextAreaDemo extends JFrame { private JTextArea textArea; public RefreshTextAreaDemo() { textArea = new JTextArea(10, 30); JScrollPane scrollPane = new JScrollPane(textArea); getContentPane().add(scrollPane, BorderLayout.CENTER); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); // 启动SwingWorker线程 new AppendTextWorker().execute(); } // SwingWorker实现类 private class AppendTextWorker extends SwingWorker<Void, String> { @Override protected Void doInBackground() throws Exception { // 模拟添加内容 for (int i = 0; i < 10; i++) { Thread.sleep(1000); publish("Hello, World! " + i + "\n"); } return null; } @Override protected void process(java.util.List<String> chunks) { // 添加内容到JTextArea for (String chunk : chunks) { textArea.append(chunk); } } } public static void main(String[] args) { new RefreshTextAreaDemo(); } } ``` 在这个例子中,我们创建了一个JFrame和一个JTextArea,并使用SwingWorker类的子类AppendTextWorker来模拟向JTextArea中添加内容。在AppendTextWorker类中,我们使用doInBackground方法来执行模拟的长时间任务,并使用publish方法在后台线程中将内容添加到chunks列表中。在process方法中,我们将chunks列表中的内容逐一添加到JTextArea中,从而实现了JTextArea的实时刷新。 当然,如果你只需要在后台线程中更新JTextArea的内容,而不需要实时刷新,也可以使用SwingUtilities.invokeLater方法来更新界面。例如,可以使用以下代码将内容添加到JTextArea中: ``` SwingUtilities.invokeLater(new Runnable() { public void run() { textArea.append("Hello, World!\n"); } }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值