2012-05-30 10 views
5

// Javaでオブジェクトを描画する方法を学習しようとしています。私はそれで良くなっていますが、画面上にイメージを取得すると、それを操作することに問題があります。私が入れた数字は、どのように形が変わっているのかわからない。少なくとも私には彼らはしません。代数では、x軸の数値を大きくすると右に、y軸の数値を大きくすると上に上がります。それは何がここで起こっていない。誰でも私にこのことがどういうものなのか説明できますか?私はまだJavaに新しいので、より多くの説明と詳細が良いです。私はJavaを学ぶために私の夏に1日2時間を掛けようとしています、そして時にはそれは少しイライラします。どんな助けでも大歓迎です。ここでJFrameの座標面を使用する

+3

Javaでは(0,0)は左上隅にあります。 – Jeffrey

+3

この[リンク](http://docs.oracle.com/javase/1.4.2/docs/guide/2d/spec/j2d-intro.html#wp61857)を参考にしてください。 – bacchus

+3

この[例](http://stackoverflow.com/a/9373195/230513)では、デカルト座標とスクリーン座標の変換について説明しています。 – trashgod

答えて

6

画面のTOP LEFT SIDE、あなたがXの値を増やすなどとして、あなたはYの値を増やすと、あなたがDOWNWARDSを移動しますが、あなたは、RIGHT SIDEに向かって移動しますからCo-ordinatesスタート。ここでは、これをもう少しよく理解し、どこでも簡単にクリックできる小さなサンプルプログラムがあります。

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class DrawingExample 
{ 
    private int x; 
    private int y; 
    private String text; 
    private DrawingBase canvas; 

    private void displayGUI() 
    { 
     JFrame frame = new JFrame("Drawing Example"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     canvas = new DrawingBase(); 
     canvas.addMouseListener(new MouseAdapter() 
     { 
      public void mouseClicked(MouseEvent me) 
      { 
       text = "X : " + me.getX() + " Y : " + me.getY(); 
       x = me.getX(); 
       y = me.getY(); 
       canvas.setValues(text, x, y); 
      } 
     }); 

     frame.setContentPane(canvas); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new DrawingExample().displayGUI(); 
      } 
     }); 
    } 
} 

class DrawingBase extends JPanel 
{ 
    private String clickedAt = ""; 
    private int x = 0; 
    private int y = 0; 

    public void setValues(String text, int x, int y) 
    { 
     clickedAt = text; 
     this.x = x; 
     this.y = y; 
     repaint(); 
    } 

    public Dimension getPreferredSize() 
    { 
     return (new Dimension(500, 400)); 
    } 

    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.drawString(clickedAt, x, y); 
    } 
} 
+0

ああ。これは素晴らしい。 –

+0

@MartinMarino:ThankyouとKEEP SMILING :-) –

+0

コードは、シンボルクラスDrawingBaseを見つけることができないと言っています。エラーはプライベート "DrawingBase"キャンバスです。キャンバス=新しい "DrawingBase"();引用符は実際のエラーがどこから来ているかを示すものです。私は助けに感謝しますが、私はこれをどのように修正するのか分かりません。もう少し助けてもらえますか? –

関連する問題