[英]Adding a text area to a tabbed pane in java
我有两个文件需要在程序中显示。 我需要使用JTabbedPane,每个文件应显示在其自己的标签中。 我可以使文本显示在选项卡中,但不会出现滚动条,因此我看不到文件中的所有信息。 如何将滚动条添加到文本区域?
我做了一个方法来创建一个带有文本的面板(这是一个文件)。 然后,我制作了另一个具有JTabbedPane的方法,并将面板添加到选项卡中。
面板方法:
private void makeTextPanel() throws IOException
{
textPanel = new JPanel();
textArea = new JTextArea();
textArea.setEditable(false);
//width: 770 height: 1000
textAreaDimensions = new Dimension(TEXT_AREA_WIDTH, TEXT_AREA_HEIGHT);
textArea.setPreferredSize(textAreaDimensions);
BufferedReader inputFile = new BufferedReader(new FileReader(FILE_ONE));
String lineOfText = inputFile.readLine();
while(lineOfText != null)
{
textArea.append("\n" + lineOfText);
lineOfText = inputFile.readLine();
}
// Add a scroll bar
scrollPane = new JScrollPane(textArea);
// Add the text area and scroll bar to the panel
textPanel.add(textArea);
textPanel.add(scrollPane);
}
选项卡式窗格方法:
private void makeTabbedPane() throws IOException
{
frame = new JFrame("Project");
tabbedPane = new JTabbedPane();
frame.add(tabbedPane, BorderLayout.PAGE_START);
// add panel to the tab
makeTextPanel();
tabbedPane.addTab("Tab 1", textPanel);
// dimensions
frameDimensions = new Dimension(FRAME_WIDTH, FRAME_HEIGHT);
frame.setPreferredSize(frameDimensions);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
重申:
您想要滚动条的组件应该始终是JScrollPane的子级。 将textArea然后再将scrollPane添加到该tabbedPane中,可能并没有按照您的想象做。 确保textArea是scrollPane的子项,并仅将scrollPane添加到tabbedPane,确保您指定了一个布局,该布局决定了scrollPane如何占用tabbedPane中所需的空间。
仅当它确定textArea大于它在给定空间中可以呈现的范围时,滚动窗格才会自动添加滚动条。
问题1)JScrollPane方法setVerticalScrollBarPolicy()和setHorizontalScrollBarPolicy()将允许您强制滚动条始终可见。
问题2)textArea的“首选”高度是您的scrollPane用于确定滚动条行为的高度(请参见本示例 )。 这一切都为您照顾。 如果没有,您将不得不考虑字体渲染高度,在textArea中放置多少文本等。
一般来说,只需将JTextArea放入JScrollPane即可看到所需的行为,而无需对JTextArea大小进行任何“特殊”操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.