gpt4 book ai didi

java - JTextArea 不显示在 JTabbedPane 内的 JPanel 上

转载 作者:行者123 更新时间:2023-11-29 07:57:59 24 4
gpt4 key购买 nike

我有一个 JTextArea,它位于 JScrollPane 内,而 JScrollPane 又位于 JPanel 内,而后者又位于 JTabbedPane 的 Tab 内。

我知道文本已添加到我的 JTextArea,但是当我在选项卡之间移动时,JTextArea 不可见。要阅读文本,我必须选择 JTextArea 中的文本,然后调出 JTextArea 背景的白色。如果我不选择,我将看不到任何内容。

我尝试了通常的 revalidate();repaint() 但它们对我不起作用。以下是一些有问题的代码:

public void writeLogEntry(Alarm alarm)
{


String value = "Blah Blah Blah";
logTextArea.append(value);
SwingUtilities.getWindowAncestor(contentPane).revalidate();
repaint();
revalidate();
setVisible(true);
}

这里是与 JTextArea 相关的元素的代码:

JPanel logPnl = new JPanel();
logPnl.setLayout(new BorderLayout(10, 10));
JScrollPane logScrollPane = new JScrollPane();
logScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
logTextArea = new JTextArea("blah blah");
logTextArea.setBounds(10, 10, 550, 300);
logTextArea.setEditable(false);
logScrollPane.add(logTextArea);
logPnl.add(logScrollPane);

contentTabs.addTab("Alarms Log", null, logPnl, "View Log");
contentPane.add(contentTabs);

我做错了什么?

最佳答案

您不应该将组件直接添加到滚动 Pane 。相反,您将组件添加到视口(viewport)。或者,您在创建滚动 Pane 时指定组件,该组件将为您添加到视口(viewport):

//JScrollPane logScrollPane = new JScrollPane();
logScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//logTextArea = new JTextArea("blah blah");
logTextArea = new JTextArea(5, 40);
logTextArea.setText("some text");
//logTextArea.setBounds(10, 10, 550, 300);
logTextArea.setEditable(false);
JScrollPane logScrollPane = new JScrollPane(logTextArea);

关于java - JTextArea 不显示在 JTabbedPane 内的 JPanel 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228521/

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