Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTextArea不';在JTabbedPane内部的JPanel上没有显示_Java_Swing_Jpanel_Jscrollpane_Jtextarea - Fatal编程技术网

Java JTextArea不';在JTabbedPane内部的JPanel上没有显示

Java JTextArea不';在JTabbedPane内部的JPanel上没有显示,java,swing,jpanel,jscrollpane,jtextarea,Java,Swing,Jpanel,Jscrollpane,Jtextarea,我有一个JTextArea,它位于JScrollPane中,JScrollPane又位于JPanel中,而JPanel又位于JTabbedPane的选项卡中 我知道文本会添加到我的JTextArea中,但当我在选项卡之间移动时,JTextArea不可见。要阅读文本,我必须选择JTextArea内的文本,然后显示JTextArea背景的白色。如果我不选择,我什么也看不到 我尝试了通常的revalidate()和repaint()但它们对我不起作用。以下是一些有问题的代码: public void

我有一个JTextArea,它位于JScrollPane中,JScrollPane又位于JPanel中,而JPanel又位于JTabbedPane的选项卡中

我知道文本会添加到我的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);

我做错了什么?

您不应该直接向滚动窗格添加组件。而是将组件添加到视口中。或者,在创建滚动窗格时指定组件,组件将被添加到视口中:

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

不应将组件直接添加到滚动窗格中。而是将组件添加到视口中。或者,在创建滚动窗格时指定组件,组件将被添加到视口中:

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

请发布一个完整的、简洁的、完全可以工作的代码示例,生成您描述的问题。我认为这是简洁的。我可以粘贴整个JTabbedPane代码,但是其他选项卡中的内容并不是真正的问题,并且会在这里造成混乱。据我所知,所有与JTextArea相关的代码都已发布:(我们没有要求提供整个选项卡式窗格代码。我们要求提供一个。另外,不要使用setBounds()。使用适当的布局管理器。请发布一个完整、简洁、完全有效的代码示例,以产生您所描述的问题。我认为这很简洁。我可以粘贴整个JTabbedPane代码,但其他选项卡中的内容实际上不是问题,并且会在此处造成混乱。据我所知,所有与JTextArea相关的代码都已发布ow.:(我们没有要求整个选项卡式窗格代码。我们要求的是一个。另外,不要使用setBounds()。使用适当的布局管理器。太棒了,成功了。谢谢:)真不敢相信这么简单。太棒了,成功了。谢谢:)真不敢相信这么简单。