我有一个扩展JComponent
的Pad_Draw类。构造函数是
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);
但是只要我在Frame中添加内容并设置框架的大小。绘图板根据需要采用整个尺寸。
我想要维护我指定的大小(200,100),我实际上想要像Windows Paint应用程序那样。我应该能够通过扩大角落来增加尺寸。一旦我伸出角落,滚动条就会被激活。任何人都可以告诉我如何实现它吗?
答案 0 :(得分:2)
JFrame
的默认布局管理器,BorderLayout
不尊重其组件的首选大小。
你可以做一个布局管理器,例如BoxLayout
,并覆盖Padscroller
组件中的getPreferredSize:
JScrollPane padScroller = new JScrollPane() {
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 100);
}
};
关于增加尺寸,请查看使用MouseAdapter
并在mouseDragged方法中更新此属性。