bildirgec.org

swing hakkında tüm yazılar

Java Robot Sınıfı ile Kendiliğinden Hareket Eden Fare

admin | 18 January 2009 13:23

java.awt.Robot sınıfı kullanılarak birbirinden enteresan programlar yazabilirsiniz. Robot sınıfı temel olarak fare ve klavyenin kendi kendine otomatik olarak hareket ettirilmesini sağlar. Arcıca ekranın yakalanarak(screeshot) imajını bu sınıf yardımıyla alabilirsiniz.
Ben bir projede kullanmak için fareyi otomatik bir şekilde hareket ettirmem gerekiyordu. Robot sınıfı imdada yetişti. Aşağıdaki kodda öğrenme amaçlı yaptığım bir alıştırma mevcut. Bu uygulamada bir pencerenin tam ortasında “TEST” etiketi bulunmakta.

Fare bu programda otomatik olarak her 2 saniyede pencere içerisinde rasgele noktalara atlıyor. Eğer bu nokta etiket içerisinde ise “HEYY” yazısını görüyorsunuz.

Bu uygulamayı yapmak için Timerve Robot ve diğer bilinen Java sınıflarını kullandım. Şimdide koda geçelim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class TestFrame extends javax.swing.JFrame {
private JLabel lblTest;
private Robot robot ;
private Random rnd = new Random();
/**
* Constructor
*/
public TestFrame() {
super("Test Penceresi");
initGUI();
try {
robot = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
final Point p = this.getLocation();// pencerenin bulundugu yer sol ust
final Dimension d = this.getSize();// pencerenin buyuklugu
//Her iki saniyede bir mause hareket ettirilecek
Timer t = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
// acilan pencere uzerinde rastele bir noktaya fareyi götür.
robot.mouseMove(rnd.nextInt((int)(d.getWidth()))+(int)(p.getX()),
rnd.nextInt((int)(d.getHeight()))+(int)(p.getY()));
}
});
t.start();
}
/**
* GUI ile ilgili işlemler
*/
private void initGUI() {
try {
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
{
lblTest = new JLabel();
getContentPane().add(lblTest);
lblTest.setText("TEST");
lblTest.setBounds(106, 76, 177, 101);
lblTest.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
lblTest.setFont(new java.awt.Font("Tahoma", 0, 16));
lblTest.setBackground(new Color(255, 255, 179));
lblTest.setForeground(new Color(0, 0, 0));
lblTest.setOpaque(true);
lblTest.setAlignmentX(0.5f);
lblTest.setHorizontalAlignment(SwingConstants.CENTER);
// Fare TEST yazısının üzerine gelince HEYYY yazacak
// Ayrılınca tekrar TEST yazısı yazacak
lblTest.addMouseListener(new MouseAdapter() {
public void mouseExited(MouseEvent evt) {
lblTest.setBackground(new Color(255, 255, 179));
lblTest.setText("TEST");
}
public void mouseEntered(MouseEvent evt) {
lblTest.setBackground(Color.RED);
lblTest.setText("HEYYY!");
}
});
}
setSize(400, 300);
this.setLocation(100, 100);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Main
* @param args
*/
public static void main(String[] args) {
TestFrame inst = new TestFrame();
inst.setVisible(true);
}
}

Java ME Nedir?

Redingot | 13 August 2008 15:37

Bilindiği üzere Sun Microsystems 1999 yılında Java 2 Micro Edition (J2ME) platformunu duyurmuştu. Günümüzde Java’nın diğer platformları olan Java 2 SE (Standard Edition) ve Java 2 EE (Enterprise Edition)’a göre Java 2 ME’nin önemi giderek artmıştır. Özellikle cep telefonu kullanımının ve özelliklerinin hızla artması bu alana olan ilgiyi artırmıştır.

Java ME platformu sadece mobil cihazlarda değil aynı zamanda gömülü sistemlerde de yaygın bir şekilde tercih edilmektedir. Zaten bu gibi kodlamanın kısıtlı olabileceği yerler düşünülerek geliştirilmiş bir teknolojidir Java ME. Bu alandaki gereksinimleri karşılamak için JRE (Java Runtime Environment) ya da JVM (Java Virtual Machine) diyebileceğimiz Java Sanal Makinesi özel olarak tasarlanmıştır.