java - jscrollpane 有拖尾图像

标签 java image jpanel jscrollpane visual-artifacts

enter image description here

我在 JScrollPane 中有一个 JPanel,每当我尝试滚动时它都会这样做。请帮忙! 我该如何解决这个问题?

编辑

JScrollPane pane;
....
pane = new JScrollPane(GC.createGraph());
pane.setPreferredSize(new Dimension(480,480*2/3));

最佳答案

放置为其他人可以看到的答案。如果您不调用 super.paintComponent,您将获得这些工件。例如,

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.*;

public class ScrollPaneArtifacts extends JPanel {
   private static final int SPA_WIDTH = 600;
   private static final int SPA_HEIGHT = SPA_WIDTH;

   @Override
   protected void paintComponent(Graphics g) {
      //super.paintComponent(g);
      g.setColor(Color.red);
      g.drawLine(0, 0, getWidth(), getHeight());
      g.drawLine(getWidth(), 0, 0, getHeight());
   }

   @Override
   public Dimension getPreferredSize() {
      return new Dimension(SPA_WIDTH, SPA_HEIGHT);
   }

   private static void createAndShowUI() {
      JScrollPane scrollpane = new JScrollPane(new ScrollPaneArtifacts());
      scrollpane.getViewport().setPreferredSize(new Dimension(400, 400));
      JFrame frame = new JFrame("ScrollPaneArtifacts");
      frame.getContentPane().add(scrollpane);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      java.awt.EventQueue.invokeLater(new Runnable() {
         public void run() {
            createAndShowUI();
         }
      });
   }
}

关于java - jscrollpane 有拖尾图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918585/

相关文章:

java - 发现不兼容的类型 : java. lang.String

java - 为什么我们需要将 toString 方法与 stringbuilder 一起使用

java - 如何使用客户端库 (java) 在 Google BigQuery 中加载 csv 数据时跳过标题行

ios - 修改 iOS 项目的 RGB 值后尝试更新 UIImageView 时应用程序崩溃

ios - 从大 PNG 生成图 block

java - 从 ServletOutputStream 输出 GIF

java - 使用另一个 Swing JPanel 初始化 Swing JPanel

java - Hibernate ManyToMany 保存双方关系

java - 如何从外部类访问 CardLayout 变量?

java - 如何向 JPanel 添加空间,以便 JScrollPane 不会位于我的组件之上?