在不同的类文件中将JScrollPane设置为JTextArea

时间:2015-03-09 16:38:02

标签: java swing jscrollpane jtextarea

基本上我有mainclass,其中包含框架,并调用" mainTabbedScreens" tabbedPane的类和这个类依次调用" analyzePage"我有JTextArea的类,我想为其设置JScrollPane。

我已经调查了两个例子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。请给我指示,谢谢。

1 个答案:

答案 0 :(得分:1)

您正在添加

private Component scroll;未初始化为to 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并编写更好的代码。