基本上我有mainclass,其中包含框架,并调用" mainTabbedScreens" tabbedPane的类和这个类依次调用" analyzePage"我有JTextArea的类,我想为其设置JScrollPane。
我已经调查了两个例子Example:1和Example: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。请给我指示,谢谢。
答案 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并编写更好的代码。