第一次用Java编写GUI
http://i58.tinypic.com/s13gh0.png
到目前为止,当我单击“坐标异常”时,JTextArea中会显示字符串的字符串,但查看文本的唯一方法是突出显示它。
我也尝试过向JTextArea添加滚动条,但没有运气。
JTextArea textArea = new JTextArea();
textArea.setBounds(10, 79, 172, 339);
frame.getContentPane().add(textArea);
JButton btnNewButton_1 = new JButton("Coordinate Anomalies");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> anomalies = vessels.coordinateAnomaly();
JScrollPane jp = new JScrollPane();
jp.setViewportView(textArea);
for (String a : anomalies) {
textArea.append(a + "\n");
}
textArea.setBounds(10, 79, 172, 339);
frame.getContentPane().add(textArea);
}
});
btnNewButton_1.setBounds(10, 45, 172, 23);
frame.getContentPane().add(btnNewButton_1);
这是我的代码(抱歉jank),不能强调我是GUI的新手并且非常感谢任何建议。
答案 0 :(得分:5)
组件只能有一个父组件。在应用程序启动时添加滚动窗格而不是JTextArea
frame.add(new JScrollPane(textArea));
答案 1 :(得分:1)
简单解决方案:
将JTextArea
添加到JFrame
时,只需在其中添加滚动窗格
JTextArea textarea = new JTextArea();
add(new JScrollPane(textarea));
答案 2 :(得分:0)
在GUI已经显示时添加组件时,需要调用re / in / validate来完成所有布局,并重新绘制()以使其显示
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> anomalies = vessels.coordinateAnomaly();
JScrollPane jp = new JScrollPane();
jp.setViewportView(textArea);
for (String a : anomalies) {
textArea.append(a + "\n");
}
textArea.setBounds(10, 79, 172, 339);
frame.getContentPane().add(jp); // changed
frame.getContentPane().invalidate(); // added
frame.getContentPane().validate(); // added
frame.getContentPane().repaint(); // added
}
});
答案 3 :(得分:0)
感谢@Reimeus的帮助,这是我最终实施的解决方案,并且有效。
JTextArea textArea = new JTextArea();
JScrollPane jp = new JScrollPane(textArea);
jp.setBounds(10, 79, 172, 339);
frame.getContentPane().add(jp);
JButton btnNewButton_1 = new JButton("Coordinate Anomalies");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
textArea.setText("");
ArrayList<String> anomalies = vessels.coordinateAnomaly();
for(String a : anomalies){
textArea.append(a + "\n");
}
}
});
btnNewButton_1.setBounds(10, 45, 172, 23);
frame.getContentPane().add(btnNewButton_1);