基本上,我有在其中具有框架的mainclass,并为tabbedPane调用了“ mainTabbedScreens”类,而该类又依次在“我要设置JScrollPane的JTextArea”中调用了“ analysisPage”类。

我查看了两个示例Example:1Example:2来解决问题,但我无法解决,请让我知道我要去哪里了!

分析课:(到目前为止,我已经尝试过!)

public class analysisPage {

    private JPanel panel1;
    private JTextField txtGraphPage;
    private JTextArea textArea;
    private Component scroll;

    public analysisPage() {
        createPageScreen1();
    }

    // function for panel - page - 1
    private void createPageScreen1() {
        panel1 = new JPanel();
        panel1.setLayout(null);


    //for title label
    JLabel lblProcessingData = new JLabel("Processing data............................................");
    lblProcessingData.setBounds(350, 5, 415, 10);
    panel1.add(lblProcessingData);


        String fileName = "loadFiles\\testFile.txt";


        try {
            textArea = new JTextArea();
            textArea.setBounds(350, 50, 400, 378);
            textArea.setBorder (new TitledBorder (new EtchedBorder(), fileName));
            textArea.setLineWrap(true);
            textArea.setEditable(false);
            textArea.setVisible(true);

            FileReader reader = new FileReader(fileName);
        BufferedReader br = new BufferedReader(reader);
        textArea.read(br, null);
        br.close();
        textArea.requestFocus();

        JScrollPane scroll = new JScrollPane(textArea);
        scroll.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        } catch (Exception e) {

            e.printStackTrace();
        }

        //panel1.add(scroll);
        panel1.add(textArea);
        panel1.setVisible(true);
//this is where trying to set the scroll for text area;


    }


    public JPanel getPanel1() {
        return panel1;
    }

}


如果我做

panel1.add(scroll);


得到一个NullPointerException错误,但是如果我这样做

panel1.add(textArea);


我没有收到错误,但scroll is not set。请给我指示,谢谢。

最佳答案

您正在添加

private Component scroll;尚未初始化为panel1。

尝试通过以下方式更改代码:

    try {
        ...

        JScrollPane scroll1 = new JScrollPane(textArea);
        scroll1.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        panel1.add(scroll1);
    } catch (Exception e) {
        e.printStackTrace();
    }


或者,如果您希望滚动成为analysisPage类的成员,则:

    try {
        ...

        scroll = new JScrollPane(textArea);
        scroll.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        panel1.add(scroll);
    } catch (Exception e) {
        e.printStackTrace();
    }


无论如何,请遵守代码约定以使代码更具可读性。您的analysisPage应命名为AnalysisPage

正如@Hovercraft Full Of Eels所建议的那样,除了NullPointerException外,您的代码中还有其他一些问题,请阅读他的评论。这将帮助您更好地了解Swing并编写更好的代码。

10-05 19:13