如何让图形对象在重新调整大小时保持静态?
问题描述:
下面我附上了代码,它在窗口中心绘制了一条简单的垂直线,但是当我调整窗口大小时,线条倾向于调整大小的方向。如何让图形对象在重新调整大小时保持静态?
但是,当尝试两条线时,第一行倾斜而第二行保持固定。
我希望它们被固定,而不管给定的大小。
public class finalPlot{
static JFrame f = new JFrame();
public static void main(final String[] args){
f.setTitle("Plot");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// f.setSize(500,500);
f.setResizable(true);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(final WindowEvent e){
System.exit(0);
}
});
f.add(new PlotArray(), BorderLayout.CENTER);
f.pack();
f.show();
}
}
class PlotArray extends Canvas{
public Dimension getPreferredSize(){
return new Dimension(500, 500);
}
public void paint(final Graphics g){
final Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
final Dimension size = getSize();
final Line2D lin =
new Line2D.Float((float) size.width/2, 90, 250, 250);
final Line2D lin2 = new Line2D.Float(45, 300, 250, 150);
g2.setPaint(Color.blue);
g2.draw(lin);
g2.draw(lin2);
}
}
谢谢
答
那么就不要使用size.width/2
,因为它是你的widht Canvas组件的。改用静态数字。
答
PlotArray.paint
每次调整窗口大小时调用,并且每次发生时,lin
都用不同的x值绘制,因为PlotArray
的宽度不同。为了保持它的不变,可以在第一次调用paint
时将其宽度存储在实例变量中。
size.width/2是问题...谢谢你 – 2011-03-11 10:06:31