こんにちは、JFrame 内で JPanel のオリジンを参照するのに問題があります。私のJPanelは、コンストラクターでJPanelの左端にある行を追加したいように設定されました。
table = new JPanel();
table.setBackground(Color.green);
table.setBounds(10,10, 600, 600);
table.setSize(width.getValue(), height.getValue());
add(table);
あとは塗装方法…
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()));
}
ペイント メソッドの最後のコマンドは、私の問題とは無関係です...コードは原点を (10, 10) として取得しているように見えますが、それを contentPane ではなく JFrame 全体に適用しています。私は contentPane を完全には理解していませんが、add() がコンテンツ ペインに追加され、それ以降は contentPane からのみ座標を参照していると思いました... setBounds() が JPanel を追加した理由がわかりません。 contentPane のみに関連して (10,10) が必要でしたが、paint() すると、contentPane に関連する座標を取得するように見えますが、JFrame を参照してそれらの座標をペイントします。値を追加して行を下に移動できることはわかっていますが、それは不十分な解決策であると思われます。
独自の paint() メソッドまたはそれらの線に沿った何かで contentPane を追加する必要がありますか?