基本上,我有在其中具有框架的mainclass,并为tabbedPane调用了“ mainTabbedScreens”类,而该类又依次在“我要设置JScrollPane的JTextArea”中调用了“ analysisPage”类。
我查看了两个示例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。请给我指示,谢谢。
最佳答案
您正在添加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并编写更好的代码。