相关疑难解决方法(0)

将组件绘制到BufferedImage会导致显示损坏

我正在使用这里JScrollNavigator描述的组件,以便为我嵌入的大型"画布式"CAD组件提供导航窗口.JScrollPane

我已经尝试调整JScrollNavigator绘制画布的缩略图以向用户提供一些额外的上下文.但是,执行此操作会导致应用程序主框架的呈现损坏.具体来说,它是调用paint(Graphics)视口组件(即我的主画布)的动作,传入由此Graphics创建的对象BufferedImage导致后续显示损坏; 如果我评论这一行,一切正常.

以下是JScrollNavigator被覆盖的paintComponent方法:

@Override
protected void paintComponent(Graphics g) {
    Component view = jScrollPane.getViewport().getView();
    BufferedImage img = new BufferedImage(view.getWidth(), view.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = img.createGraphics();

    // Paint JScrollPane view to off-screen image and then scale.
    // It is this action that causes the display corruption!
    view.paint(g2d);
    g2d.drawImage(img, 0, 0, null);
    Image scaled = img.getScaledInstance(getWidth(), getHeight(), 0);

    super.paintComponent(g);
    g.drawImage(scaled, 0, 0, null);
}
Run Code Online (Sandbox Code Playgroud)

有没有人对腐败的原因有任何建议?我原本以为绘画到幕外图像应该对现有的绘画操作没有影响.

编辑 …

java swing bufferedimage awt java-2d

7
推荐指数
1
解决办法
1876
查看次数

JTabbedPane:在选项卡中显示任务进度

我有一个简单的Swing Java应用程序执行搜索,结果显示在一个新选项卡中.搜索正在运行时,我想在选项卡的标题中显示进度图标或动画.我尝试添加一个gif图标,但它没有动画.有没有理由不这样做?

java swing jtabbedpane jprogressbar

3
推荐指数
2
解决办法
4054
查看次数

标签 统计

java ×2

swing ×2

awt ×1

bufferedimage ×1

java-2d ×1

jprogressbar ×1

jtabbedpane ×1