在 java 中滚动时,视图会变形
When scrolling in java the view gets distorted
我已将 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);
pnlLadder.setBackground(new Color(0,0,0,0));
....
scrlLadder.setBackground(new Color(0,0,0,0));
我猜问题出在透明背景上。这很容易验证,只需去掉 setBackground(...) 语句即可。
查看 Backgrounds With Transparency 可能的问题和一些解决方案。
我已将 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);
pnlLadder.setBackground(new Color(0,0,0,0));
....
scrlLadder.setBackground(new Color(0,0,0,0));
我猜问题出在透明背景上。这很容易验证,只需去掉 setBackground(...) 语句即可。
查看 Backgrounds With Transparency 可能的问题和一些解决方案。