【发布时间】:2015-05-10 22:01:51
【问题描述】:
基本上我有其中有框架的主类,并为 tabbedPane 调用“mainTabbedScreens”类,而这个类又调用“analysisPage”类,其中我有 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。请给我指路,谢谢。
【问题讨论】:
-
1) 避免使用空布局——这会将您的代码标记为新手代码,因为如果您有任何 Swing 经验,您会发现空布局在除您的平台之外的所有平台上看起来都很糟糕拥有,导致难以升级和增强的刚性 GUI。相反,学习使用和使用布局管理器,因为它们将使您的编码更容易,并且您的 GUI 功能更多。 2)同样避免设置任何组件的边界。 3) JTextAreas 尤其如此。对此调用 setBounds 几乎可以保证 JScrollPane 无法使用它。
-
感谢 cmets,将尝试按照您的建议更改布局!
标签: java swing jscrollpane jtextarea