0

JPanel があり、スクロールできるようにしたいので、JScrollPane に追加していますが、JScrollPane で Panel が完全に表示されません。非常に小さなコーナーが表示され、スクロールもしません。しかし、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

例を追加することはできませんが、

もちろんできます。あなたはすでに持っています。ここで行う必要があるのは、与えられたアドバイスに従い、null レイアウトの代わりにレイアウト マネージャーを使用することです。

LPanel は JPanel から拡張され、ペイントをオーバーライドしました。

paintComponent()カスタム ペイントは、paint() メソッドではなくメソッドをオーバーライドすることによって行われます。

2^k の独自の幅と高さがあります。

getPreferredSize()ディメンションを返すには、パネルのメソッドをオーバーライドする必要があります。その後、スクロールペインは正しく機能します。

于 2013-04-14T18:20:38.037 に答える
0

ScrollPane にスクロールを追加しましたか。例えば

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