我和这个家伙有同样的困难:
与linewrap = true一起使用时,MigLayout JTextArea不会缩小
我使用了其中一个答案中描述的解决方案; 明确设置最小大小.如果将包含JTextArea的JPanel直接放在JFrame中,然后调整窗口大小,这可以正常工作.
但是,将包含JTextArea的面板放在JScrollPane中时,会再次出现同样的问题.这是为什么,以及如何解决这个问题?
干杯
编辑:一个例子
public class MiGTest2 extends JFrame{
public MiGTest2(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new MigLayout("fillx, debug", "[fill]"));
JTextArea textArea = new JTextArea();
textArea.setLineWrap(true);
panel.add(textArea, "wmin 10");
//panel.add(new JTextField());
JScrollPane scrollPane = new JScrollPane(panel);
//add(panel);
add(scrollPane);
pack();
}
public static void main(String[] args){
new MiGTest2().setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
如果取消注释//add(panel);,并注释add(scrollPane);,缩小窗口大小也会缩小JTextArea.也就是说,它不适用于JScrollPane.还要注意布局管理器在首次放大后缩小窗口大小时如何翻转并开始"摇动"其所有内容
是否有一个Swing的小部件,其行为类似于a JLabel,如果文本的尺寸发生变化,它会自动重排文本?例如:
Large horizontal space available: +--------------+ | Foo bar baz | +--------------+ Small horizontal space available: +---------+ | Foo bar | | baz | +---------+
我目前正在使用JEditorPane与setContentType("text/html")和HTML内容.这有效,但它不使用系统的默认标签字体来显示文本.此外,我宁愿不将HTML标记放入我的文本中 - 最好\n将字符转换为换行符,其他所有内容都将显示为文本.