2013-07-25 65 views
0

我有一个JScrollPane与视图。我正在做一个聊天应用程序,这就是为什么我需要将我的ScrollBar设置为Maximum()。为了获得正确的最大视图,我必须先验证。当我验证我的ScrollPane时,自动重绘正在进行。我不想重绘,因为当我将ScrollBar设置为最大值时,它会进行双重绘制:当ScrollBar位于顶部时,而另一个位于底部时。需要noRepaint()当我验证()

我的代码:

Main.getWindow().getMainPanel().getScrollPaneCenter().validate(); 
scrollPaneCenter.getVerticalScrollBar().setValue(scrollPaneCenter.getVerticalScrollBar().getMaximum()); 

PS:我想禁用我conponent的重绘或者你有一个解决方案有一个逆转JScrollPane的(总有滚动条底部)。

回答

1

我正在做一个聊天应用

我使用一个JTextArea或猜测的JTextPane您正在。

这就是为什么我需要将我的ScrollBar设置为Maximum()。

您不需要手动验证或设置滚动条。您可以将文本追加到文档的底部。请参阅Text Area Scrolling了解几种解决方案。

+0

我在我的JScrollPane中使用了一个JPanel。我会尝试JTextPane你认为这只是显示某些组件的方法吗? (我在聊天中为聊天做了Bubble) – g3r4n

+0

我想做类似的事情,但它不起作用。 (因为布局?)'JTextPane pan = new JTextPane();
pan.setBackground(new Color(1,0,0,0));
pan.setLayout(null);
int taillePanel = 0;
for(int i = 0; i <20; i ++){
JButton test = new JButton(“Button number:”+ i);
test.setBorderPainted(false);
test.setBounds(0,(i * 75),250,75);
taillePanel + = 75;
pan.insertComponent(test);}
pan.setPreferredSize(new Dimension(250,taillePanel)); JScrollPane scrollPaneCenter = new JScrollPane(pan);' – g3r4n

+0

[see](http://stackoverflow.com/a/17741565/714968) – mKorbel