繁体   English   中英

在Java中将文本区域添加到选项卡式窗格

[英]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);
}

重申:

  • 如何使滚动条可见?
  • 我将文本区域的高度设置为1000。滚动条能否滚动所有内容? 如果没有,如何设置文本区域的高度以适合文件中的所有内容?

您想要滚动条的组件应该始终是JScrollPane的子级。 将textArea然后再将scrollPane添加到该tabbedPane中,可能并没有按照您的想象做。 确保textArea是scrollPane的子项,并仅将scrollPane添加到tabbedPane,确保您指定了一个布局,该布局决定了scrollPane如何占用tabbedPane中所需的空间。

仅当它确定textArea大于它在给定空间中可以呈现的范围时,滚动窗格才会自动添加滚动条。

问题1)JScrollPane方法setVerticalScrollBarPolicy()setHorizo​​ntalScrollBarPolicy()将允许您强制滚动条始终可见。

问题2)textArea的“首选”高度是您的scrollPane用于确定滚动条行为的高度(请参见本示例 )。 这一切都为您照顾。 如果没有,您将不得不考虑字体渲染高度,在textArea中放置多少文本等。

一般来说,只需将JTextArea放入JScrollPane即可看到所需的行为,而无需对JTextArea大小进行任何“特殊”操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM