我正在使用Java JRE 1.6.7并具有JComponent和JScrollPane。我无法得到双缓冲工作,这总是导致闪烁。如果我使用了Canvas,则需要缓冲处理,但这会在与JScrollPane结合使用时产生问题。自定义绘制组件不在JScrollPane内绘制
所以我下载了JRE 1.6.18,希望能解决其中的一个问题。那么现在JScrollPane中的JComponent根本就没有正确绘制。它仅绘制JComponent的外部区域,就像JScrollPane在边界之外绘制它一样。
下面是代码未drawing..this中的区域的1个像素宽的白色轮廓的结果应该在哪里发生拉丝的例子:
public void paint(Graphics arg0) {
Graphics2D graphics = (Graphics2D) arg0;
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, (int) getWidth(), (int) getHeight());
任何帮助是非常感谢! -Craig
嗨 感谢您的回复。雅,大纲肯定在那里。我在红色也尝试过。我也尝试把我的paint代码放在paintComponent中,但是我得到了相同的结果。 我将绘画JComponent直接添加到一个JDialog的中心,并且它完美地绘画。但是,只要我将它添加到JScrollPane并将其放入JDialog中,我就开始获得奇怪的绘图行为。 这里是我添加到对话框/滚动条的代码: – Craig 2010-02-02 18:48:42
JScrollPane scrollPane = new JScrollPane(); scrollPane.add(containerCanvas); scrollPane.setSize(containerCanvas.getSize()); dialog.add(scrollPane,BorderLayout.CENTER); dialog.setVisible(true); – Craig 2010-02-02 18:49:18