【问题标题】:need noRepaint() when i validate()当我验证()时不需要重绘()
【发布时间】:2013-07-26 02:29:26
【问题描述】:

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

我的代码:

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

PS:我想禁用我的组件的重绘,或者你有一个解决方案可以让 JScrollPane 反转(总是让 ScrollBar 到底部)。

【问题讨论】:

    标签: java swing jscrollpane repaint jscrollbar


    【解决方案1】:

    我正在做一个聊天应用程序

    我猜你正在使用 JTextArea 或 JTextPane。

    这就是为什么我需要让我的 ScrollBar 达到最大值()。

    您无需手动验证或设置滚动条。您将文本附加到文档的底部。请参阅Text Area Scrolling 了解一些解决方案。

    【讨论】:

    • 我在我的 JScrollPane 中使用 JPanel。我会尝试 JTextPane 你认为这是显示 Some Component 的最佳方式吗? (我已经为聊天中的对话制作了气泡)
    • 我想做类似的事情,但它不起作用。 (因为布局?)JTextPane pan = new JTextPane();<br/> pan.setBackground(new Color(1, 0, 0, 0));<br/> pan.setLayout(null);<br/> int taillePanel = 0;<br/> for (int i = 0; i < 20; i++) {<br/> JButton test = new JButton("Button number : " + i);<br/> test.setBorderPainted(false);<br/> test.setBounds(0, (i * 75), 250, 75);<br/> taillePanel += 75;<br/> pan.insertComponent(test);}<br/> pan.setPreferredSize(new Dimension(250, taillePanel)); JScrollPane scrollPaneCenter = new JScrollPane(pan);
    猜你喜欢
    • 2011-05-04
    • 2017-03-10
    • 1970-01-01
    • 2020-12-03
    • 2015-12-25
    • 2013-05-19
    • 1970-01-01
    • 2012-01-28
    • 2021-10-01
    相关资源
    最近更新 更多