gpt4 book ai didi

java - 如何使 JTextArea 可滚动但仍设置高度?

转载 作者:行者123 更新时间:2023-12-02 06:38:35 28 4
gpt4 key购买 nike

我有一个 Java 应用程序,它连接到设备并在 JTextArea 中显示日志。我希望 JTextArea 能够滚动,这是通过将其放入 JScrollPane 中来实现的。包含 JTextAreaJScrollPane 位于 BorderLayoutCENTER 部分。我在显示之前使用 pack() 设置 JFrame 的大小。然而,这有一些问题:

  • 如果没有为 JTextArea 设置高度,它会非常薄,而且文本看不清楚(第二张图片中实际上有文本):

    with no text & no height set with some text & no height set

  • JTextArea 设置了首选大小,一开始似乎工作得很好。但是,当有更多文本时,滚动条不会按预期显示。当 JFrame 缩小时,无论 JTextArea 中的文本量有多少,它们都会出现。这也不会通过滚动显示所有文本。

    with little text & preferred height with lots of text & preferred height with lots of text & preferred height & resized

  • 此外,设置最小高度也没有帮助;它会导致与第一种情况相同的结果。

我的初始化框架的代码:

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);
}

最佳答案

不要玩弄尺寸。

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

//logArea = new JTextArea();
logArea = new JTextArea(5, 20);

关于java - 如何使 JTextArea 可滚动但仍设置高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19385429/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com