我有这样的代码。我减少了所有的细节,但是按下一个按钮后,这个文本区域会发生变化,它所做的只是改变文本区域。没有滚动添加。我甚至试图将滚动策略设置为始终,但它返回一个错误。该面板将被添加到带有BorderLayout.CENTER的另一个面板,然后该面板将被添加到JFrame中。如何将更改的JTextArea添加到JScrollPane?
public class Tester extends JFrame{
JPanel panel = new JPanel();
public static void main(String[] args) {
new Tester();
}
public Tester(){
setSize(1300, 700);
setTitle("A Bar Chart");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel();
setVisible(true);
}
public void panel(){
JTextArea text = new JTextArea();
text.setPreferredSize(new Dimension(100, 100));
JScrollPane pane = new JScrollPane(text);
JButton button = new JButton("a");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text.setText("asd\nasdasd\nasdasd\nasdasd\nasdasd\nasdasd\na\na\na\n");
}
});
panel.add(pane);
panel.add(button);
add(panel);
}
}
我想现在我只是想简单一些。也许问题是,当我设置文本的大小不会改变,所以滚动不会出现。所以也许现在的问题是我如何让滚动显示或更改它的大小,使滚动显示。
'我砍倒所有details' - 是很好,直到问题得到解决,你不知道什么细节是相关的。发布一个证明问题的适当的[mcve]。这是一个带有scrollpane,textarea和将数据添加到文本区域的按钮的框架。仅当文本区域的首选大小大于滚动窗格的大小时,滚动才会发生。 '这个面板将被添加到另一个面板与BorderLayout.CENTER' - 不需要面板。只需将滚动窗格直接添加到框架。 – camickr
好的。我设法用简单的代码来模拟问题。 –
这个[topic](http://stackoverflow.com/questions/13096045/adding-scrollpane-to-jtextarea)可能会帮助 – Squiddie