Java - 如何设置JTextArea高度以适合其内容?

时间:2016-01-24 03:22:09

标签: java swing jtextarea

我在JPanel中有一个JTextArea。 JPanel具有空布局或使用绝对布局。 JTextArea具有固定宽度。如何设置JTextArea高度以适合其内容?

我有这段代码:

*some random string of varying length*
String str = "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda"
           + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda"
           + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda"
           + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda"
           + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda"
           + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda";


JTextArea wtd = new JTextArea(str);
wtd.setLineWrap(true);
wtd.setOpaque(false);
wtd.setEditable(false);
wtd.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
wtd.setLocation(*defined x position*, *defined y position*);
wtd.setPreferredSize(new Dimension(*fixed width*, *the height depending on the content*));
wtd.setSize(wtd.getPreferredSize());
add(wtd);

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

  1. 不要使用null布局。虽然null布局和setBounds()似乎是Swing新手,比如创建复杂GUI的最简单和最好的方法,但是你创建的Swing GUI越多,你在使用它们时会遇到更严重的困难。 。当GUI调整大小时,他们不会调整组件的大小,他们是增强或维护的皇室女巫,当他们放置在滚动窗格中时,他们完全失败,当他们在所有平台或屏幕分辨率不同时看起来很糟糕原来的。
  2. 不要为JTextAreas设置绝对高度或宽度或preferredSize 永远 - 这样做可以完全阻止它们在JScrollPanes中使用。
  3. 而是设置JTextArea的列和行属性。