Java SWING-JTextArea拟合文本
我试图设置一个JTextArea的大小来包围文本。 现在我有这个Java SWING-JTextArea拟合文本,java,swing,user-interface,jtextarea,Java,Swing,User Interface,Jtextarea,我试图设置一个JTextArea的大小来包围文本。 现在我有这个 package messagebubble; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import javax.swing.*; public class MainPanel extends JPanel { private JPanel msgHoldingPanel = new JPanel();
package messagebubble;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.*;
public class MainPanel extends JPanel {
private JPanel msgHoldingPanel = new JPanel();
public MainPanel() {
JTextArea msg2 = new JTextArea();
msg2.setLineWrap(true);
msg2.setWrapStyleWord(true);
msg2.setText("ola tudo bem ");
msgHoldingPanel.setLayout(new BoxLayout(msgHoldingPanel, BoxLayout.PAGE_AXIS));
msgHoldingPanel.add(msg2);
setLayout(new BorderLayout());
add(msgHoldingPanel, BorderLayout.PAGE_START);
}
private static void createAndShowGui() {
JFrame frame = new JFrame("MainPanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new MainPanel());
frame.setSize(400, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
这说明了这一点
我希望它看起来像这样
我可以通过添加以下行来实现
msg2.setMaximumSize(msg2.getPreferredSize());
msg2.setAlignmentX(0);
但如果我设置了一个较长的消息,它不会显示所有内容。我希望它与文本的最宽部分一样宽。您可以将
msgHoldingPanel
的布局更改为新的FlowLayout(FlowLayout.LEFT)
?我正在尝试制作一个消息应用程序,我希望在前一个应用程序下显示新消息,这就是BoxLayout的原因。此外,在FlowLayout中,当文本换行时,它会缩小文本区域的宽度。通常,消息传递应用程序只有一个文本区域用于输入消息。然后有一个显示区,用于显示接收/发送的消息。通过这种方式,您实际上知道消息的最终长度,以便更好地进行计算。例如,最初可能会将包裹设置为禁用。然后,首选大小计算可能会得到首选大小,并将其与父容器的宽度进行比较。当首选尺寸大于时,打开换行并重新验证以获得新的首选尺寸。@camickr我已经有了所有这些组件,这只是消息视图,但这是个好主意。虽然我不确定这是否可能,因为SWING中的任何容器的大小都是0drawn@camickr没关系,那很好,非常感谢!您是否可以将msgHoldingPanel
的布局更改为新的FlowLayout(FlowLayout.LEFT)
?我正在尝试制作一个消息应用程序,我希望在前一个应用程序下显示新消息,这就是BoxLayout的原因。此外,在FlowLayout中,当文本换行时,它会缩小文本区域的宽度。通常,消息传递应用程序只有一个文本区域用于输入消息。然后有一个显示区,用于显示接收/发送的消息。通过这种方式,您实际上知道消息的最终长度,以便更好地进行计算。例如,最初可能会将包裹设置为禁用。然后,首选大小计算可能会得到首选大小,并将其与父容器的宽度进行比较。当首选尺寸大于时,打开换行并重新验证以获得新的首选尺寸。@camickr我已经有了所有这些组件,这只是消息视图,但这是个好主意。虽然我不确定这是否可能,因为SWING中的任何容器的大小都是0drawn@camickr没关系,那很好,非常感谢!