加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用复选框在文本区域中包装文本

发布时间:2020-12-15 05:20:18 所属栏目:Java 来源:网络整理
导读:我在Swing中创建了一个用于编辑数据的对话框.它包含一个JTextArea,两个JButton实例(OK Cancel)和一个JCheckBox(Wrap Text).我想要做的是在用户单击复选框时将文本区域中的文本包装起来.我最初使用setLineWrap(true)包装文本. 我使用以下代码: Runnable r1=n
我在Swing中创建了一个用于编辑数据的对话框.它包含一个JTextArea,两个JButton实例(OK& Cancel)和一个JCheckBox(Wrap Text).我想要做的是在用户单击复选框时将文本区域中的文本包装起来.我最初使用setLineWrap(true)包装文本.

我使用以下代码:

Runnable r1=new Runnable() {
        @Override
        public void run() {
            System.out.println("True");
            keyField.setLineWrap(true);
            keyField.requestFocus();
        }
    };

    Runnable r2=new Runnable() {
            @Override
            public void run() {
               System.out.println("FALSE");
               keyField.setLineWrap(false);
               keyField.repaint();
               keyField.requestFocus();
            }
     };
    final Thread t1=new Thread(r1) ;
    final Thread t2=new Thread(r2);

    final JCheckBox chkSwing = new JCheckBox("Word Wrap",true);

    chkSwing.addItemListener(
            new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e) {
                    //To change body of implemented methods use File | Settings | File Templates.
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        t1.start();
                    } else if (e.getStateChange() != ItemEvent.SELECTED){
                        t2.start();
                    }
                }
            });

    panel.add(chkSwing);

问题

问题是,一旦我取消选中复选框,文本就会被解包,但再次检查复选框不会再次包装文本.控制台显示正在调用该线程.如何使复选框工作以设置/取消设置文本区域的自动换行行为?

解决方法

没有理由开始单独的线程.更糟糕的是,您不应该修改非EDT上的Swing组件.请参阅 Concurrency in Swing教程

chkSwing.addItemListener(
  new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent e) {
       keyField.setLineWrap( e.getStateChange() == ItemEvent.SELECTED );
    }
  } );

会做的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读