0

我有一个 JPanel,我希望它能够滚动,所以我将它添加到 JScrollPane,但我的 JScrollPane 没有完全显示我的面板。只显示了它的一个很小的角落,它也不会滚动。但是当我只将 LPanel 添加到我的 JFrame 时,它​​会正确显示!有人可以告诉我我在这里做错了什么吗?

关于我的代码的信息:

  • LPanel 是从 JPanel 扩展而来的,我已经覆盖了油漆。但正如我所说,油漆效果很好!它有自己的宽度和高度,即 2^k。
  • k 是我的面板中的行数。

这是我的代码:

public class Graphics extends JFrame {
  LPanel panel;
  int k;
  public Graphics(int k1) {
    setLayout(null);
    this.k = k1;
    panel = new LPanel(k);
    panel.setSize(panel.width * 30, panel.height * 30);
    new CoveringwithLs(k, panel);
    JScrollPane pane = new JScrollPane(panel);
    pane.setLocation(20, 20);
    if (k < 4) {
      pane.setSize(panel.width * 30, panel.height * 30);
      this.setSize(panel.width * 30 + 80, panel.height * 30 + 80);
    } else {
      pane.setSize(panel.width * 30, 600);
      this.setSize(panel.width * 30 + 80, 600);
    }
    getContentPane().add(pane);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
  }
  public static void main(String[] args) {
    new Graphics(3);
  }
}

谁能帮我?

4

3 回答 3

1

我不能添加一个例子,

当然可以。你已经有了。现在您需要做的是遵循给出的建议并使用布局管理器而不是空布局。

LPanel 是从 JPanel 扩展而来的,我已经覆盖了油漆。

自定义绘画是通过重写paintComponent()方法完成的,而不是 paint() 方法。

它有自己的宽度和高度,即 2^k。

您需要覆盖getPreferredSize()面板的方法以返回尺寸。然后滚动窗格将正常工作。

于 2013-04-14T18:20:38.037 回答
0

Have you added the scrolls to the ScrollPane. e.g.

 JScrollPane pane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
于 2013-04-14T11:48:45.483 回答
-1

您需要为您的 JPanel设置首选大小,否则 JScrollPane 不知道它需要通过其滚动条支持的组件有多大。setSize有不同的目的,在这种情况下是不够的。

于 2013-04-14T18:37:54.467 回答