我目前有一个设定大小的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/