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);
   } 
};

关于增加大小,请查看在mouseDragged方法中使用MouseAdapter并更新此属性。

于 2013-02-10T14:56:10.137 回答