Java'da daire çizip mouse ile oynatmak.

aliprinter
30-05-2006, 18:37   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Nis 2005

Merhaba, Java'ya yeni başladığım için çok basit olduğunu düşündüğüm ama takıldığım bir problem var. Forumun seviyesini bu tür sorularla düşürmek istemem ama soruyorum:

Bir ödevim var. Formun yada appletin ortasında bir içi dolu çember olacak. Bunu mouse ile drag yapabileceğim ve klavye tuşlarıyla sağa sola yukarıya filan taşıyabileceğim. Üstte de kordinatlarını yazacak.

Şu aşamada takıldığım nokta;
Rectangle rect = new Rectangle(0,0,150,90);
diyerek bir dikdörtgen oluşturup bunu bir nesne olarak location gibi özellklerini ayarlayabiliiyorum ama
Circle circ = new Circle(0,0,90,90);
gibi bir tanımlama yaparak daireyi oluşturup buna bir nesneymiş gibi davranamıyorum. Circle gibi bi tanımlama tanımıyor Java.

Graphics2D g2 = (Graphics2D)g;
g2.fillOval(20, 30, 50, 50);

gibi bir tanımlama yaparak daireyi çizebiliyorum ama bunu bir nesne olarak müdahele edemiyorum. Yani MouseDrag gibi olaylar veremiyorum.
Daireyi nasıl bir nesne olarak çizip bunu mouse ve klavye ile hareket ettirebilirim bir ipucu örnek vb birşey verebilir misiniz?

TuncaBozkurt
30-05-2006, 18:44   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
4,805 mesaj
Kayıt Tarihi:Kayıt: Oca 2006

ben java dilini çok iyi bilmiyorum ama hiçbir zaman bir soru sorarken forumun seviyesini düşüreceğini vs. düşünme.zaten bu forumlar soru sormak için.yardımcı olamadığım için üzgünüm.

proman
02-06-2006, 13:24   |  #3  
Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Haz 2004

Merhaba, istediginiz program.
*** HTML dosyasi ***
<html>
<head><title>Project Applet</title></head>
<body>
<applet code="Project2.class" width=300 height=300>
</applet>
</body>
</html>

*** Java kodu ***
// Project2.java
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Project2 extends Applet {
  Color background = Color.YELLOW;
  Color foreground = Color.BLUE;
  
  String str = "";
  int mouseX = 0, mouseY = 0;
  int step = 10, stepX, stepY;
  int radius = 20; // radius of circle
  int circleX = 50, circleY = 50; // left and top coordinates of circle
  boolean dragging = false;

  public Project2() {}
  
  public void init() {
    setBackground(background);
    setForeground(foreground);
  }
  
  public boolean mouseDrag(Event evObj, int x, int y) {  
    circleX = x;
    circleY = y;
   
    if ((circleX+2*radius) > getSize().width) {
        circleX = getSize().width - 2*radius;
    } else if(circleX < 0) {
        circleX = 0;
    }
   
    if ((circleY+2*radius) > getSize().height) {
        circleY = getSize().height - 2*radius;
    } else if(circleY < 0) {
        circleY = 0;
    }
    repaint();
    showStatus("" + circleX + ", " + circleY);
    return true;
  }
   
  public boolean keyDown(Event evObj, int key) {  
    String s;
    switch(key) {
        // Move Up
        case 1004: circleY -= step; break;
        // Move down
        case 1005: circleY += step; break;
        // Move left
        case 1006: circleX -= step; break;
        // Move right
        case 1007: circleX += step; break;
        case 1008: // F1: set random circle color
            foreground = new Color((int)(Math.random()*255), (int)(Math.random()*255), (int)(Math.random()*255));
            break;
    } // end switch block
   
    if ((circleX+2*radius) > getSize().width) {
        circleX = getSize().width - 2*radius;
    } else if(circleX < 0) {
        circleX = 0;
    }
   
    if ((circleY+2*radius) > getSize().height) {
        circleY = getSize().height - 2*radius;
    } else if(circleY < 0) {
        circleY = 0;
    }
    showStatus("" + circleX + ", " + circleY);
    repaint();
    return true;
  } // end keydown

  public void paint(Graphics g) {
    g.setColor(foreground);
    g.fillOval(circleX, circleY, 2*radius, 2*radius);
    //g.fillOval(stepX, stepY, 2*radius, 2*radius);
   
  }
}

bilge.adam61
07-06-2006, 01:45   |  #4  
Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Eki 2005

bir tane daire olacak. bunu mouse ile sürükleyip sağa sola goturebileceksin.
ok tuşları ile sağa sola yukarı aşağı goturebileceksin.
4 tane buton olcak bunlarla da bu daireyi yukarı aşağı sağa sola sürükleyeceksin.
F1,F2.. tuşları ile dairenin rengi değişecek.

aslında projenin en acik hali buuu acillllllll cevabiniza cok sevinecem

acemirüzgar
25-02-2008, 12:27   |  #5  
Yeni Üye
Teşekkür Sayısı: 0
41 mesaj
Kayıt Tarihi:Kayıt: Oca 2008

takıldığım bi nokta var yukarıda bi programı html sayfasında değilde ayrı bir program olmasını istiyorum açıkça main classını nasıl yazarım yardımcı olurmusunuz

acemirüzgar
26-02-2008, 15:47   |  #6  
Yeni Üye
Teşekkür Sayısı: 0
41 mesaj
Kayıt Tarihi:Kayıt: Oca 2008

pek anlatamadımmı yoksa bilen birimi yok biraz daha açık yazıyım programı çalıştırmak için içine
public static void main(String []args)
{??????????????????}
diye yazıyoruzya bu ??????olan yerleri nası yazcaz nesnesini olusturuyomda bu nesneyle hangi metodu çağırmam gerek?

insider105
18-03-2008, 09:54   |  #7  
Üye
Teşekkür Sayısı: 0
86 mesaj
Kayıt Tarihi:Kayıt: Oca 2007

yukarıdaki program bir Java-applet örneği ve appletlerde main method olmaz.Main method Javada normal editöründe vardır

acemirüzgar
24-03-2008, 21:57   |  #8  
Yeni Üye
Teşekkür Sayısı: 0
41 mesaj
Kayıt Tarihi:Kayıt: Oca 2008

bende normal editörlerde çizim işlemi yaparken yazacağimiz kodları sormaya çalışmıştım JCreater kullanıyorum onda bu çizimleri nasıl yapabilirim??

Son Düzenleme: acemirüzgar ~ 24 Mart 2008 21:58