2013-11-22 123 views
0

正如標題所說,我可以重新定義Java的BorderLayout.CENTER的高度和寬度嗎?我打算使用的Graphics2D繪製到這個領域,但我並不總是事先知道應該如何大,超出了一切Java Swing調整大小BorderLayout.CENTER

抽獎類(我的主類中聲明):

@SuppressWarnings("serial") 
private class Draw extends JComponent { 
    public void paint(Graphics graphics) { 
     Graphics2D g = (Graphics2D) graphics; 
     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

     Shape drawLine = new Line2D.Float(0, 0, 500, 500); 

     g.setPaint(Color.BLACK); 
     g.draw(drawLine); 
    } 
} 

主要構造,其中繪製叫做:

public Main() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 640, 480); 
    setJMenuBar(getMenuBar_1()); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(new BorderLayout(0, 0)); 
    contentPane.add(getPanelControls(), BorderLayout.SOUTH); 
    contentPane.add(getPanelInfo(), BorderLayout.EAST); 
    contentPane.add(new Draw(), BorderLayout.CENTER); 
} 

我目前直接繪製BorderLayout.CENTER。我應該繪製到JPanel並使用它的setPreferredSize()方法嗎?

+0

是的,你可以。顯示你的代碼。 – Masudul

+2

您可能想要在中心位置上繪製組件。然後,您可以簡單地使用組件的尺寸。 – kiheru

回答

2

正如標題所說,我可以重新定義Java的 BorderLayout.CENTER的高度和寬度嗎?我打算使用的Graphics2D繪製到這個區域,但 我不會總是事先知道應該如何大,不適合 一切英寸

(只回答主題)

  • 覆蓋其getPreferredSize

  • 那麼任何大小的contraproductive,叫JFrame.pack();以前JFrame.setVisible(true);

  • 創建JFrame作爲局部變量

EDIT的paint()


  • 倍率paintComponent()代替,內部paintComponent()第一代碼線應super.paintComponent(),否則繪畫累積

  • Shape drawLine = new Line2D.Float(0, 0, 500, 500);應該是的代替500, 500

0

Graphics不分配修復像素。使用getHeight()getWidth()方法來獲得動態大小。使用該尺寸繪製線。

int width=getHeight(); 
int height=getHeight(); 

Shape drawLine = new Line2D.Float(width/2, height/2, width/2+500, height/2+500);