実行時にJlayeredPaneのいずれかのレイヤーに線を描画しようとしています。私が現在直面しているのは、マウスを離すと自動的に線が描かれることです。マウスをもう一度クリックするまで、描いた線をそこに置いておきたい。私はこのように階層化区画でJLayeredPaneのいずれかのレイヤーでグラフィック(Piantコンポーネント)を使用する方法
layeredPane.add(iDimension, new Integer(1),0);
をiDimensionを追加した
私はこのよう
iDimension = new getDimension();
iDimension.setBounds(1, 12, 441, 380);
//iDimension.setOpaque(true);
iDimension.setBackground(new Color(0,0,0,100));
、以下の記述されたクラスを呼び出しています。ここgetDimensionクラス
public class getDimension extends JPanel {
public getDimension() {
setDoubleBuffered(true);
this.setBorder(UIManager.getBorder("ComboBox.border"));
this.repaint();
}
Point pointStart = null;
Point pointEnd = null;
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
pointStart = e.getPoint();
}
public void mouseReleased(MouseEvent e) {
pointStart = null;
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
pointEnd = e.getPoint();
}
public void mouseDragged(MouseEvent e) {
pointEnd = e.getPoint();
repaint();
}
});
}
public void paint(Graphics g) {
super.paint(g);
if (pointStart != null) {
g.setColor(Color.GREEN);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
// System.out.println("" + pointStart.x +"," + pointStart.y +"," + pointEnd.x +"," +pointEnd.y);
}
}
}
です私はJavaの初心者です。私の質問にあいまいさがある場合は、問題なく修正してください。
よりよいヘルプについては、[、最小完全、かつ検証プログラム例](http://stackoverflow.com/help/mcve)を作成し、掲載を検討してください。私たちはあなたのプログラム全体を見たいとは思っていませんが、あなたのコードをコンパイルしてコンパイルし、あなたの問題とは関係ない余分なコードがなくてもあなたの問題を実証しています。バグを分離して公開しようとするだけで、問題を非常にうまく解決できます。 –
サイドノート:JPanelのpaintメソッドではなくpaintComponentメソッドを描画し、オーバーライドと思われるメソッドの上にある '@ Override'アノテーションを使用してください。 –
サイドノート2:[Java命名規則](http://ja.wikipedia.org/wiki/Naming_convention_(programming)#Java)を学び、使いたいと思うでしょう。変数名はすべて小文字で始まり、クラス名は大文字で始める必要があります。これを学んでこれに従うことで、コードをよりよく理解でき、他者のコードをよりよく理解できるようになります。 –