【问题标题】:When scrolling in java the view gets distorted在java中滚动时,视图会失真
【发布时间】:2015-03-18 23:21:07
【问题描述】:

我已将 JPanel 添加到 JScrollPane。

JPanel 中有很多元素,例如标签、面板按钮等。当我滚动时,视图会变形,我不知道为什么,因为我已经仔细检查了代码。这是什么原因造成的?是否应该进行一些重绘?

    pgLaPanel pnlMain = new pgLaPanel();
              pnlMain.setLayout(new BoxLayout(pnlMain, BoxLayout.Y_AXIS));
              pnlMain.setPreferredSize(new Dimension(1250,765));
              pnlMain.add(pnlTop);
              //pnlTop.setVisible(true);
              pnlMain.add(pnlLow);
              pnlLow.setVisible(true);

    JPanel pnlLadder = new JPanel((LayoutManager) new FlowLayout(FlowLayout.LEFT));
           pnlLadder.setLayout(new BoxLayout(pnlLadder, BoxLayout.Y_AXIS));
           pnlLadder.setBackground(new Color(0,0,0,0));
           pnlLadder.add(pnlTitle);
           pnlLadder.add(pnl1n2);
           pnlLadder.add(pnl3n4);
           pnlLadder.add(pnl5n6);
           pnlLadder.add(pnl7n8);
           pnlLadder.add(pnl9n10);
           pnlLadder.add(pnl11n12);
           pnlLadder.add(pnl13n14);
           pnlLadder.add(pnl15n16);
           pnlLadder.add(pnl17n18);
           pnlLadder.add(pnl19n20);
           pnlLadder.add(pnl21n22);
           pnlLadder.add(pnl23n24);
           pnlLadder.add(pnl25n26);
           pnlLadder.add(pnl27n28);
           pnlLadder.add(pnl29n30);
           pnlLadder.add(pnlButtons);


    final JScrollPane scrlLadder = new JScrollPane();
                      scrlLadder.setViewportView(pnlLadder);
                      scrlLadder.setFont(pgMnCore.useFont); 
                      scrlLadder.setBackground(new Color(0,0,0,0));

    scrlLadder.setVisible(false);

    pnlMain.add(scrlLadder);  

【问题讨论】:

  • "i'm not sure why as i've doubled checked the code" -- 但我们不能。 :(
  • 这可能是自定义绘画问题,但除非您提供 runnable example 来证明您的问题,否则这一切都只是猜测。这不是代码转储,而是您正在做的事情的一个示例,它突出了您遇到的问题。这将导致更少的混乱和更好的响应
  • 我已经添加了一些代码。有很多重复的代码,所以发布它没有意义,但我发布的内容让你知道我在做什么。谢谢!
  • @iron 你和我对什么是“可运行的例子”有明显的不同看法。如果它不能被编译或执行,它就不是一个可运行的例子。 pgLaPanel 是什么?
  • 只有很多行不适合(我正在努力将其分解为不同的类。pgLaPanel 只是一个具有背景图像的扩展面板

标签: java swing jpanel jscrollpane


【解决方案1】:
pnlLadder.setBackground(new Color(0,0,0,0));
....
scrlLadder.setBackground(new Color(0,0,0,0));

我猜问题是透明背景。这很容易验证,只需去掉 setBackground(...) 语句即可。

查看Backgrounds With Transparency 了解可能的问题和一些解决方案。

【讨论】:

  • 感谢您的链接,它肯定与透明度问题有关,因为我在将每个背景设置为黑色后消除了该问题。谢谢指点!
  • 我认为需要为 JViewport 覆盖 RepaintManager#addDirtyRegion 并设置 JViewport#setScrollMode
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
相关资源
最近更新 更多