2011-03-11 33 views
1

下面我附上了代碼,它在窗口中心繪製了一條簡單的垂直線,但是當我調整窗口大小時,線條傾向於調整大小的方向。如何讓圖形對象在重新調整大小時保持靜態?

但是,當嘗試兩條線時,第一行傾斜而第二行保持固定。

我希望它們被固定,而不管給定的大小。

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

    } 

} 

謝謝

回答

1

那麼就不要使用size.width/2,因爲它是你的widht Canvas組件的。改用靜態數字。

+0

size.width/2是問題...謝謝你 – 2011-03-11 10:06:31

0

PlotArray.paint每次調整窗口大小時調用,並且每次發生時,lin都用不同的x值繪製,因爲PlotArray的寬度不同。爲了保持它的不變,可以在第一次調用paint時將其寬度存儲在實例變量中。

相關問題