java - JTextArea setFont 改变textarea的大小

标签 java swing

我目前有一个设定大小的JTextArea,但是如果我更改该区域的字体,该区域的大小也会发生变化。

    textArea = new JTextArea(20,40);
    textArea.setWrapStyleWord(true);
    textArea.setLineWrap(true);
    textArea.setFont(font);

我知道这一点是因为行数和列数的大小随着字体大小的变化而变化。但是如果我注释掉 setFont,并添加一个带有调用完全相同的内容的 ActionListener 的 JButton,则 JTextArea 保持不变

    if(e.getSource() == applyButton){
        textArea.setFont(fc.getSelectedFont());
    }

字体fc.getSelectedFont相同

最佳答案

任何 swing 组件的布局中的每项更改,在调用 revalidate() 之前都不会生效。 repaint() 在这种情况下没有帮助。

在第一种情况下,您在更改在屏幕上可见之前进行了更改。当第一次可见时,Swing 会为您调用 revalidate()。你的第二个案例与此不同!。

关于java - JTextArea setFont 改变textarea的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30331261/

相关文章:

java - 如何更改 JTextPane 中特定单词的颜色?

java - 使 JInternalFrame 不动

Java : how to check current Perm/PermGen Size?

java - 将项目导入 Eclipse 后文件夹困惑

java - java中的音效

java - Maven 不调用 testng 参数

java - java swing 不能在 java 8 update 45 中工作吗?

Java:通过 _happens-before_ 关系在最终类的构造函数中对 "leak"this-reference 安全吗?

java - 基于另一个但具有不同 API 的 Swing 组件创建一个

java - 使用搜索词过滤 JTable 而不丢失背景颜色