2012-04-18 8 views
2

こんにちは、私のJFrame内のJPanelの起点を参照するのに問題があります。私のJPanelはコンストラクタのように設定されていました。私はJPanelの左端にある行を追加したいと思います。 paintメソッドの最後のコマンドは、私の問題とは無関係ですJFrameでJPanelの座標を参照する

public void paint(Graphics g){ 
    super.paint(g); 
    Graphics2D g2d = (Graphics2D)g; 
    g2d.drawLine(table.getX(), table.getY(), table.getX(), (table.getY() + table.getHeight())); 
    g2d.drawLine(100, 100, (int)Math.round(cueBall.getPositionX()), (int)Math.round(cueBall.getPositionY())); 
} 

その後

table = new JPanel();      
table.setBackground(Color.green);     
table.setBounds(10,10, 600, 600); 
table.setSize(width.getValue(), height.getValue()); 
add(table);          

paintメソッド

は... ... コードは(10、10としての原点を取得しているように見えます)、それをcontentPaneではなくJFrame全体に適用します。私はcontentPaneを完全に理解していませんが、add()がコンテンツペインに追加され、次にcontentPaneから座標を参照していると思っています...なぜsetBounds()がJPanelを追加したのか分かりませんcontentPaneだけに関連して(10,10)を求めていましたが、paint()を実行すると、contentPaneに関連して座標を取得するように見えますが、JFrameを参照してそれらの座標をペイントしているようです。私はラインを下に移動するための値を追加することができたが、それは貧弱な解決策であると思う。

contentPaneに独自のpaint()メソッドなどを追加する必要がありますか?

答えて

2

JPanel.paintComponent()で絵を上書きしてください。チェックアウトPainting in AWT and Swing

setbounds()の使用理由がわからない場合は、absolute positioningのコンポーネントを使用しますか?私はJavaのレイアウトに慣れ親しむことをお勧めします、ここでは良いスタートです - A Visual Guide to Layout Managers

+0

それは意味があります...そしてその理由は私が設定された範囲を使用した..私はレイアウトに問題があって、学校プロジェクトのために私は計画しているので、かなり彼らの下でうんざりしたくない私がそれを機能させると、それらを見つけ出します。 – Yoshi

+1

* "私はそれが機能したら、それらを理解することを計画しています" *あなたのGUIはあなたがするまで機能しません。 –

+1

@AndrewThompson私はこれを昨夜の難しい方法で見つけました:)私は計画より早くレイアウトマネージャーを学ぶように見えます – Yoshi

関連する問題