Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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
JavaSwing:嵌套选项卡和布局_Java_Swing_Scroll_Jtextarea_Jtabbedpane - Fatal编程技术网

JavaSwing:嵌套选项卡和布局

JavaSwing:嵌套选项卡和布局,java,swing,scroll,jtextarea,jtabbedpane,Java,Swing,Scroll,Jtextarea,Jtabbedpane,我对下一个JTabbedPanes有一个问题,这让我很困惑。我已将此问题隔离到一个简短的演示应用程序中(基于oracle选项卡式窗格教程): 运行此命令时,JTextArea将被切断,没有滚动条,而不是垂直于面板。textPanel中的BorderLayout不应该将文本区域的大小设置为选项卡的大小吗?这只发生在嵌套选项卡上:如果我只使用单个级别的选项卡,则文本区域会正确匹配。您需要将JTextArea添加到JScrollBar的视口中,然后将其添加到JTabbedPane持有的组件中 JPan

我对下一个JTabbedPanes有一个问题,这让我很困惑。我已将此问题隔离到一个简短的演示应用程序中(基于oracle选项卡式窗格教程):


运行此命令时,JTextArea将被切断,没有滚动条,而不是垂直于面板。textPanel中的BorderLayout不应该将文本区域的大小设置为选项卡的大小吗?这只发生在嵌套选项卡上:如果我只使用单个级别的选项卡,则文本区域会正确匹配。

您需要将JTextArea添加到JScrollBar的视口中,然后将其添加到JTabbedPane持有的组件中

JPanel textPanel = new JPanel();
textPanel.setLayout(new BorderLayout());
textPanel.setName("Text Panel");

// **** note change:
textPanel.add(new JScrollPane(textArea), BorderLayout.CENTER);

请注意,有两种常见的方法可以将组件(此处为JTextArea)添加到视口中。一个是如上所述将其传递到JSrollPane的构造函数中,另一个是对已创建的JScrollPane调用
setViewportView(…)
,将组件传递到方法的参数中。无论您做什么,都不要将JTextArea通过其
add(…)
方法传递到已经创建的JScrollPane中,因为您将删除滚动窗格的veiwport,这将阻止它正常工作。

您需要将JTextArea添加到JScrollBar的视口中,然后将其添加到JTabbedPane持有的组件中

JPanel textPanel = new JPanel();
textPanel.setLayout(new BorderLayout());
textPanel.setName("Text Panel");

// **** note change:
textPanel.add(new JScrollPane(textArea), BorderLayout.CENTER);

请注意,有两种常见的方法可以将组件(此处为JTextArea)添加到视口中。一个是如上所述将其传递到JSrollPane的构造函数中,另一个是对已创建的JScrollPane调用
setViewportView(…)
,将组件传递到方法的参数中。无论您做什么,都不要将JTextArea通过其
add(…)
方法传递到已创建的JScrollPane中,因为您将删除滚动窗格的veiwport,这将阻止它正常工作。

您根本没有使用
JScrollPane
。更改此项:

JPanel textPanel = new JPanel();
textPanel.setLayout(new BorderLayout());
textPanel.setName("Text Panel");
textPanel.add(textArea, BorderLayout.CENTER);
为此:

JPanel textPanel = new JPanel();
textPanel.setLayout(new BorderLayout());
textPanel.setName("Text Panel");
textPanel.add(new JScrollPane(textArea), BorderLayout.CENTER); // Changed

如果不使用
JScrollPane
,您将无法获得滚动条。有关
JScrollPane
的更多信息,请参阅。另外,作为参考,.

您根本没有使用
JScrollPane
。更改此项:

JPanel textPanel = new JPanel();
textPanel.setLayout(new BorderLayout());
textPanel.setName("Text Panel");
textPanel.add(textArea, BorderLayout.CENTER);
为此:

JPanel textPanel = new JPanel();
textPanel.setLayout(new BorderLayout());
textPanel.setName("Text Panel");
textPanel.add(new JScrollPane(textArea), BorderLayout.CENTER); // Changed

如果不使用
JScrollPane
,您将无法获得滚动条。有关
JScrollPane
的更多信息,请参阅。另外,作为参考,如果没有使用
JScrollPane
JScrollBar
,则.JTextArea将被切断,没有滚动条..”,这并不奇怪。如果没有使用
JScrollPane
JScrollBar
,那么发布一条“…JTextArea被切断,没有滚动条…”就不会让我感到惊讶。为了更快地得到更好的帮助,发布一条消息。我明白了,这是有道理的。我以前尝试过添加滚动窗格,但我认为在一个级别的面板/框架中缺少布局定义,因此最终结果与根本不使用布局定义一样。我已经让它正常工作了,谢谢!我明白了,这是有道理的。我以前尝试过添加滚动窗格,但我认为在一个级别的面板/框架中缺少布局定义,因此最终结果与根本不使用布局定义一样。我已经让它正常工作了,谢谢!