0

私は Pad_Draw を拡張するクラスを持っていJComponentます。コンストラクタは

public Pad_Draw()
{
      this.setDoubleBuffered(true);
      this.setLayout(null);
};

paintComponent メソッドポッドは次のとおりです。

 public void paintComponent( Graphics g )
 {
      graphics2D = (Graphics2D)g;
      graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
      graphics2D.setPaint(Color.white);
      graphics2D.fillRect(0, 0, getSize().width, getSize().height);
 }

JFrame私はScrollPaneでこれを追加しています:

    JScrollPane Padscroller = new JScrollPane();
    Padscroller.setWheelScrollingEnabled(true);
    Padscroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    Padscroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    Padscroller.setPreferredSize(new Dimension(200, 100));
    Padscroller.setMinimumSize(new Dimension(200, 100));
    Padscroller.setMaximumSize(new Dimension(200, 100));
    Padscroller.setViewportView(drawPad);
    content.add(Padscroller, BorderLayout.CENTER);

しかし、フレームにコンテンツを追加してフレームのサイズを設定するとすぐに。ドローイングパッドは、必要に応じて全体のサイズを取得しています。

指定したサイズ (200,100) を維持したいのですが、実際には Windows Paint アプリケーションのようなものが必要です。角を伸ばすことでサイズを大きくできるはずです。コーナーを拡張するとすぐに、スクロールバーがアクティブになります。誰かがそれを達成する方法を教えてもらえますか?

4

1 に答える 1

2

のデフォルトのレイアウト マネージャはJFrameBorderLayoutそのコンポーネントの優先サイズを考慮しません。

コンポーネントBoxLayoutで getPreferredSize をオーバーライドするなどのレイアウト マネージャーを使用できます。Padscroller

JScrollPane padScroller = new JScrollPane() {
   @Override
   public Dimension getPreferredSize() {
      return new Dimension(200, 100);
   } 
};

サイズの増加については、 mouseDraggedMouseAdapterメソッドでこのプロパティを使用して更新する方法をご覧ください。

于 2013-02-10T14:56:10.137 に答える