0

我有一个 Java 应用程序,它连接到设备并以JTextArea. 我希望它JTextArea是可滚动的,我通过将它放在一个JScrollPane. JScrollPane包含 的是JTextAreaa 的CENTER一部分BorderLayout。我用来在它显示之前pack()设置它的大小。JFrame但是,这有一些问题:

  • 没有设置高度,JTextArea它很薄,看不清文字(第二张图中实际上有文字):

    没有文字和高度没有设置 带有一些文字且没有设置高度

  • 为它设置了首选尺寸JTextArea,起初它似乎工作正常。但是当有更多文本时,滚动条不会按预期显示。JFrame无论JTextArea. _ 这也不会通过滚动显示所有文本。

    几乎没有文字和首选高度 有很多文字和首选高度 有很多文字和首选高度和调整大小

  • 此外,设置最小高度也无济于事。它导致与第一种情况相同的结果。

我初始化框架的代码:

JButton connectBtn, disconnectBtn;
JTextArea logArea;

public MyApplication() throws HeadlessException {
    super();
    setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
    addWindowListener(new MyWindowListener()); // Disconnect and exit on close
    setLayout(new BorderLayout());
    connectBtn = new JButton("Connect");
    disconnectBtn = new JButton("Disconnect");
    disconnectBtn.setEnabled(false);
    connectBtn.addActionListener(new ConnectListener()); // Connects to device
    disconnectBtn.addActionListener(new DisconnectListener()); // Disconnects from device
    logArea = new JTextArea();
    logArea.setEditable(false);

    // Whatever fixes the problem goes here... e.g.
    // logArea.setPreferredSize(new Dimension(100, 200));

    JPanel buttons = new JPanel(new BorderLayout());
    buttons.add(connectBtn, BorderLayout.LINE_START);
    buttons.add(disconnectBtn, BorderLayout.LINE_END);
    add(buttons, BorderLayout.PAGE_START);
    add(new JScrollPane(logArea), BorderLayout.CENTER);
    pack();
    setVisible(true);
}
4

1 回答 1

2

不要玩弄大小。

在文本区域中指定所需的行/列,文本区域将计算其自己的首选大小。

//logArea = new JTextArea();
logArea = new JTextArea(5, 20);
于 2013-10-15T15:44:11.307 回答