gpt4 book ai didi

java - 除非我对其调用append(),否则JTextArea不会显示

转载 作者:行者123 更新时间:2023-11-30 04:33:08 25 4
gpt4 key购买 nike

以下问题令我困惑,所以我来这里寻求帮助。

经过实验,我最终得到了这段代码:

JTextArea chatPanel = null;
JScrollPane scrollPanel = null;

if(chatPanel == null)
{
chatPanel = new JTextArea("derp");
chatPanel.setEditable(false);
chatPanel.setForeground(new Color(10,191,26));
chatPanel.setOpaque(false);
scrollPanel = new JScrollPane(chatPanel);
scrollPanel.setOpaque(false);
scrollPanel.getViewport().setOpaque(false);
scrollPanel.setBorder(BorderFactory.createEmptyBorder());
}

//## marked area ##
scrollPanel.setBounds(9,596,435,138);
pane.add(scrollPanel);

结果呢?什么也没有出现。我期望的带有“derp”的文本区域不存在,只是一个空的滚动面板。现在,如果我转到 ## 标记区域 ## 并将其替换为:

chatPanel.append("Hello.");

chatPanel 在scrollPanel 中显示良好,其文本为“derpHello.”。对正在发生的事情有什么想法吗?

根据记录, Pane 是一个简单的容器,具有空布局,否则可以正常显示所有内容。声明,仅供记录:

Container pane = getContentPane()
pane.setLayout(null);

最佳答案

我对以下代码没有问题,我可以很好地看到绿色的“derp”:

import java.awt.Color;
import java.awt.Container;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class TestTextArea {

private void initUI() {
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea chatPanel = null;
JScrollPane scrollPanel = null;
Container pane = frame.getContentPane();
pane.setLayout(null);
if (chatPanel == null) {
chatPanel = new JTextArea("derp");
chatPanel.setEditable(false);
chatPanel.setForeground(new Color(10, 191, 26));
chatPanel.setOpaque(false);
scrollPanel = new JScrollPane(chatPanel);
scrollPanel.setOpaque(false);
scrollPanel.getViewport().setOpaque(false);
scrollPanel.setBorder(BorderFactory.createEmptyBorder());
}

// ## marked area ##
scrollPanel.setBounds(9, 596, 435, 138);
pane.add(scrollPanel);
frame.validate();
frame.setSize(600, 800);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
new TestTextArea().initUI();
}
});
}

}

现在,我真的建议您使用适当的 LayoutManager 而不是那个空布局。这将允许您使用 pack()revalidate() 并拥有更简单、更易于维护的代码。

肯定还有其他东西你的代码暂时没有说明。尝试输入 SSCCE .

关于java - 除非我对其调用append(),否则JTextArea不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139442/

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