![]() | |
| | #1 (permalink) |
| Üye Üyelik Tarihi: 05/2008
Mesaj: 3
|
Selamlar, Epeyce bir ihtimal denedim kaynakları araştırdım kodları çalıştırdım ama tam olarak istediğimi yapan bir şey bulamadım. Belkide istediğim şey yanlışta olabilir. İstediğim şey bir appletin arkasına backgroudn image koymak(burası gayet basit ![]() ve bu resmin üstüne image buttonlar çizmek(aslında bir oyun yazıyorum ve üstüne taşlar koymak istiyorum). Ama buttonları istediğim x,y koordinatına çizmek istiyorum. Yani add(button1) şeklinde yapmak istemiyorum. Yada add(button) desem bile kendim paint edip mouse clickleri yakalamak istiyorum. imagebutton örnekleri gördüm fakat hep panelin üstüne add diyerek ekliyorlar. Neden button istiyorum çünkü mouse eventlerini yakalamak istiyorum. Herhangi olabilecek bir başka yöntem varsa onlara da açığım. Cevaplarınız için şimdiden teşekkürler. |
| | |
| | #2 (permalink) |
| Matafleur Üyelik Tarihi: 02/2003
Mesaj: 593
|
isin sirri layoutlarda yatiyor; su adresteki "Laying Out Components Within a Container" konusunu incelemeni oneririm: http://java.sun.com/docs/books/tutor...ing/index.html hatta gorsel gelistirme yapiyorsan bu adresi mutlaka tamamen incelemelisin.. sevgi, saygi.. _DD_
__________________ if u wanna fuck with the eagles u've gotta learn 2 fly |
| | |
| | #3 (permalink) |
| Üye Üyelik Tarihi: 05/2008
Mesaj: 3
|
isin sirri layout seciminde fakat onemli olan o sirri cozmek zaten Benim yaptigima en uygun olan okudugum kadariyla setLayout(null) yapmak AbsoluteLayout yani. Fakat burda Applet icinde setBounds diyerek classın yerini veriyor. Halbuki classın kendisini çizmesi gerek. Eğer ben applet içinden classın paint metodunu çağırarak çizdirirsem o zamanda mouse eventlerinı yakalamıyorum bir türlü. |
| | |
| | #4 (permalink) |
| Üye Üyelik Tarihi: 10/2007
Mesaj: 145
|
Benim daha farklı bir önerim var. MouseListener'i implement eden bir class yeterli olacaktir. Bu listener'i Oyun appletine veya paneline eklerseniz - addMouseListener()- mouse eventlerini dinleyebiliyor olacaksınız.Applet/Panel üzerinde olusan her event dinlenecektir. Ancak sadece Cisimciğin üzerine tıkladıgında bundan haberdar olmak istiyorsaniz, Kod: class GameObject implements MouseListener{
Rectangle body;
GameObject (Rectangle body){
this.body = body;
}
/*Mouse Listener methodlarinda...
Rectangle clickedPixelRect = new Rectangle(event.getX(),event.getY(),1,1);
if(body.intersects(clickedPixelRect){
clickedOnObject();
}
*/
}
__________________ Aklına ve yeteneğine çok güvenme evlat! Sırrın ardından niceleri gitti de hepsi öldüler. Ölmeden önce ölmenin sırrına erenlere selamım. |
| | |
| | #5 (permalink) |
| Üye Üyelik Tarihi: 05/2008
Mesaj: 3
|
Rasit dediğini de denedim ![]() RoundButton classım : Kod: public class RoundButton extends Component {
protected MouseListener mouseListener = null; // Post action events to listeners
protected boolean pressed = false; // true if the button is detented.
int spikeOrder;
int spikeNumber;
int buttonId;
Image image;
int w,h;
boolean clicked;
//Graphics g;
public RoundButton(Image image, int buttonId, int spikeOrder, int spikeNumber) {
this.buttonId= buttonId;
this.image = image;
this.spikeNumber = spikeNumber;
this.spikeOrder = spikeOrder;
}
public MouseListener getMouseListener() {
return mouseListener;
}
public void setMouseListener(MouseListener mouseListener) {
this.mouseListener = mouseListener;
}
public int getButtonId() {
return buttonId;
}
public void setButtonId(int buttonId) {
this.buttonId = buttonId;
}
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
public int getSpikeOrder() {
return spikeOrder;
}
public void setSpikeOrder(int spikeOrder) {
this.spikeOrder = spikeOrder;
}
public int getSpikeNumber() {
return spikeNumber;
}
public void setSpikeNumber(int spikeNumber) {
this.spikeNumber = spikeNumber;
}
public void paint(Graphics g) {
//System.out.println("SN :"+this.spikeNumber+" X : "+findXPosition(this.spikeNumber, this.spikeOrder)+" Y : "+findYPosition(this.spikeNumber, this.spikeOrder));
//System.out.println(this.getSpikeNumber()+" "+this.getSpikeOrder());
//Image temp = getImage();
g.drawImage(this.getImage() ,findXPosition(this.spikeNumber, this.spikeOrder), findYPosition(this.spikeNumber, this.spikeOrder), this);
//g.drawImage( this.getImage(),0,20, this);
// g.setColor(Color.black);
//g.drawLine(0, 0, 1000, 1000);
super.paint(g);
}
/**
* The preferred size of the button.
*/
public Dimension getPreferredSize() {
return new Dimension(46, 44);
}
/**
* The minimum size of the button.
*/
public Dimension getMinimumSize() {
return new Dimension(100, 100);
}
/**
* Determine if click was inside round button.
*/
public boolean contains(int x, int y) {
int mx = getSize().width/2;
int my = getSize().height/2;
return (((mx-x)*(mx-x) + (my-y)*(my-y)) <= mx*mx);
}
public int findXPosition(int spikeNumber ,int spikeOrder)
{
if(spikeNumber<=6)
return 420+(53*(6-spikeNumber));
if(spikeNumber<=12)
return 40+(53*(12-spikeNumber));
if(spikeNumber<=18)
return 40+(53*(spikeNumber-13));
if(spikeNumber<=24)
return 420+(53*(spikeNumber-19));
return -1;
}
public int findYPosition(int spikeNumber ,int spikeOrder)
{
if(spikeNumber<=12)
return 32 + ((spikeOrder-1)*44);
if(spikeNumber<=24)
return 530 -((spikeOrder-1)*44);
return -1;
}
public void addMouseListener(MouseListener l) {
mouseListener = AWTEventMulticaster.add(mouseListener, l);
}
public void removeAMouseListener(MouseListener l) {
mouseListener = AWTEventMulticaster.remove(mouseListener, l);
}
}
Applet classım : Kod:
public class Tavla extends JApplet {
static final int neutral = 0;
static final int white = 1;
static final int black = 2;
//Color to be used when drawing a white checker
static final Color clr_white = new Color(200, 200, 200);
//Color to be used when drawing a black checker
static final Color clr_black = new Color(50, 50, 50);
//Color to be used when drawing a white spike
static final Color spike_black = new Color(130, 70, 0);
//Color to be used when drawing a black spike
static final Color spike_white = new Color(240, 215, 100);
//When moving, the original position of the checker
private int old_spike;
Graphics2D g_buffer;
static final int x_offset = 20;
static final int y_offset = 60;
BufferedImage b_bimage;
static Board board;
Image boardImg;
Image whiteMan,blackMan;
Canvas canvas ;
private int used_move = 0;
/* used_move == 1 means first dice has been used
* used_move == 2 means second dice has been used
* used_move == 0 means no die have been used yet
*/
//The move possible with each dice
//Positions:
// 1 - 24 = spikes, 1 being on the beginning of the black quarter
//-1 = bar
// 0 = black bear off
// 25 = white bear off
private int potmove1, potmove2;
private int current_player = white;
//If there are doublets, how many doublet moves remain
int doublet_moves;
//This contains some booleans about the status of the game
Status status;
//Class that performs the network operations
Communication comm = null;
//Textfield used for typing messages
TextField msg_input;
//TextArea used to display messages between the players
TextArea msg_display;
//Scroll pane to provide scrolling capabilities for messages
ScrollPane msg_scrollpane;
FixedButton FButton[] = new FixedButton[8];
ExampleMouseListener mouseListener;
public void start(){
}
public void init(){
setLayout(null);
whiteMan = getImage(getDocumentBase(),"http://localhost:8080/tavla/beyaz.gif");
blackMan = getImage(getDocumentBase(),"http://localhost:8080/tavla/siyahh.gif");
boardImg = getImage(getDocumentBase(),"http://localhost:8080/tavla/board2.jpg");
mouseListener = new ExampleMouseListener();
try {
board = new Board(this);
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
// TODO: handle exception
}
status = new Status();
status.networked = false;
for(int i=0;i<30;i++)
{
RoundButton rb = board.buttons[i];
add(rb);
rb.addMouseListener(mouseListener);
}
}
public void paint(Graphics g)
{
//drawBoard(g);
drawMen(g);
}
private void drawMen(Graphics g2){
for (int i = 0; i < 30; i++) {
RoundButton rb = board.buttons[i];
rb.paint(g2);
}
}
class ExampleMouseListener implements MouseListener {
public ExampleMouseListener() {
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("FATIH");
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void actionPerformed(ActionEvent e) {
System.out.println("Button Pressed: " + e.getActionCommand());
}
}
RoundButtonun kendi paint methodu çağırması içinde illaki add(rb) ile birlikte layout kullanmak gerekiyor. o zaman setbound kullanmak gerekiyor. yani bi taraf olsa bi taraf olmuyor |
| | |
| | #6 (permalink) |
| Üye Üyelik Tarihi: 10/2007
Mesaj: 145
|
Tam olarak o değil... Söyledigim yöntemde Layoutlara bulasmayacaksin. Çözümü Layoutla da yapilabilecektir tabi ama benim söyledigim layoutsuz olan yöntemi.Layout'a bulasmiyoruz... Tarif ediyorum; 1-GameEnvorienment diye bir classimiz olsun bu oyun ortamindaki tüm nesneleri bir collectionda tutsun. 2-GameObject diye ata class yarat.Bu classi extend eden diger classlarin ortak özellikleri ,mouse 'i dinlemek (yani birer mouse Listener implemantasyonu) , kendi kendilerini cizmeleri (draw(Graphics g); ) gerekiyor. 3-GameEnvorienment ise tüm nesneleri paint metodunda cizen(draw metotlarini cagiran) bir Panel yada Appletin kendisi olacak.
__________________ Aklına ve yeteneğine çok güvenme evlat! Sırrın ardından niceleri gitti de hepsi öldüler. Ölmeden önce ölmenin sırrına erenlere selamım. |
| | |
![]() |
| Bookmarks |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konuyu açana göre | Forum | Cevap | En Son Mesaj |
| AJAX ile Resim Yenileme [Image Refresh - Image Verification] | Nickolas | Javascript / DHTML / Ajax | 6 | 19/06/2008 17:19 |
| radio button | the lizard king | Javascript / DHTML / Ajax | 0 | 06/01/2008 17:45 |
| Image uzerinde Image | SeyN | Javascript / DHTML / Ajax | 2 | 29/11/2006 17:25 |
| button | alper | Flash / Director / Swift 3D ... | 5 | 20/11/2003 15:26 |
| Ps Button ? | Junkie | Photoshop / Corel / PSP | 3 | 12/10/2003 23:29 |
| Reklamlar & Desteklenenler | |
| Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv | |