import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.awt.image.BufferedImage;
import javax.imageio.*;
public class ClientVNC extends JFrame {
private Image img;
private Image img1;
public ImageComponent displayImage = new ImageComponent();
public ClientVNC()
{
img = getToolkit().getImage("C:\\\\img1.png");
MediaTracker mt = new MediaTracker(this);
mt.addImage(img, 0);
try {
mt.waitForAll();
}
catch (InterruptedException e)
{
}
initComponents();
for(int i = 0; i < 240; i++)
{
for (int j = 0; j < 320; j++)
displayImage.setPixels(j, i, i*j*4000); //16777215 == weiß, 0 == schwarz
}
img1 = displayImage.getBuffImage();
setLayout(new BorderLayout());
add(new BildPanel(img, img1));
addMouseListener(new DedectMouseListener());
addMouseMotionListener(new MausGezogen());
}
public ImageComponent getImageObject()
{
return displayImage;
}
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
labelIPAdresse = new javax.swing.JLabel();
textFeldIPAdresse = new javax.swing.JTextField();
labelPortnummer = new javax.swing.JLabel();
textFeldPortnummer = new javax.swing.JTextField();
buttonVerbinden = new javax.swing.JButton();
buttonSchliessen = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
labelStatus = new javax.swing.JLabel();
MenuBar = new javax.swing.JMenuBar();
datei = new javax.swing.JMenu();
schliessen = new javax.swing.JMenuItem();
ProgrammInfo = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("VNC Client");
setAlwaysOnTop(true);
setBounds(new java.awt.Rectangle(100, 50, 440, 0));
addHierarchyBoundsListener(new java.awt.event.HierarchyBoundsListener() {
public void ancestorMoved(java.awt.event.HierarchyEvent evt) {
formAncestorMoved(evt);
}
public void ancestorResized(java.awt.event.HierarchyEvent evt) {
}
});
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
labelIPAdresse.setText(" IP- Adresse:");
textFeldIPAdresse.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textFeldIPAdresse.setText("10.0.0.196");
labelPortnummer.setText("Portnummer:");
textFeldPortnummer.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textFeldPortnummer.setText("5900");
buttonVerbinden.setText("Verbinden");
buttonVerbinden.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
buttonVerbinden.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonVerbindenActionPerformed(evt);
}
});
buttonSchliessen.setText("Schlie\u00dfen");
buttonSchliessen.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
buttonSchliessen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonSchliessenActionPerformed(evt);
}
});
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(labelIPAdresse, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textFeldIPAdresse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(labelPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textFeldPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(14, 14, 14)
.addComponent(buttonVerbinden, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonSchliessen, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(labelIPAdresse, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
.addComponent(textFeldIPAdresse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(textFeldPortnummer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1)
.addComponent(buttonVerbinden)
.addComponent(buttonSchliessen))
);
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
jLabel1.setText(" Status:");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(labelStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(201, Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
.addComponent(labelStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
);
datei.setText("Datei");
schliessen.setText("Schlie\u00dfen");
schliessen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
schliessenActionPerformed(evt);
}
});
datei.add(schliessen);
MenuBar.add(datei);
ProgrammInfo.setText("Programminfo");
MenuBar.add(ProgrammInfo);
setJMenuBar(MenuBar);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 512, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(591, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
pack();
}// </editor-fold>
private void formAncestorMoved(java.awt.event.HierarchyEvent evt) {
new Thread(new Runnable() {
public void run() {
for(int i = 0; i < 240; i++) //im Konstruktor der Klasse
{
for (int j = 0; j < 320; j++)
displayImage.setPixels(j, i, i*j); //16777215 == weiß, 0 == schwarz
try {Thread.sleep(100);} catch (InterruptedException e) {}
}
}}).start();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ImageComponent displayImage = new ImageComponent();
for(int i = 0; i < 240; i++) //im Konstruktor der Klasse
{
for (int j = 0; j < 320; j++)
displayImage.setPixels(j, i, i*j); //16777215 == weiß, 0 == schwarz
try {Thread.sleep(100);} catch (InterruptedException e) {}
}
}
private void buttonVerbindenActionPerformed(java.awt.event.ActionEvent evt) {
try {
OutputThread outTh = new OutputThread();
outTh.start();
}
catch (Exception exsock)
{
labelStatus.setText("Fehler bei der Verbindung: " + exsock);
System.out.println("Thread konnte nicht gestartet werden: " + exsock);
}
}
private void buttonSchliessenActionPerformed(java.awt.event.ActionEvent evt) {
try {
sock.close();
}
catch(Exception io)
{
System.out.println("Die Verbindung konnte nicht geschlossen werden: " + io);
}
System.exit(0);
}
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ClientVNC().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenuBar MenuBar;
private javax.swing.JMenu ProgrammInfo;
private javax.swing.JButton buttonSchliessen;
private javax.swing.JButton buttonVerbinden;
private javax.swing.JMenu datei;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JLabel labelIPAdresse;
private javax.swing.JLabel labelPortnummer;
public javax.swing.JLabel labelStatus;
private javax.swing.JMenuItem schliessen;
private javax.swing.JTextField textFeldIPAdresse;
private javax.swing.JTextField textFeldPortnummer;
// End of variables declaration
public boolean pwRichtig;
public Socket sock;
public int state;
public int welcherButton;
}
/* Klasse zum Ausgaben des PowerPanels */
class BildPanel extends JPanel{
private Image img1;
private Image img2;
public BildPanel(Image img1, Image img2){
this.img1 = img1;
this.img2 = img2;
}
public BildPanel()
{}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(img1,0,0,this);
g.drawImage(img2, 110, 73, this);
}
public Image getImage()
{
return img2;
}
}
class ImageComponent extends JComponent
{
private BufferedImage bufferedImage;
public ImageComponent()
{
bufferedImage = new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB);
}
public void setPixels(int Reihe, int Spalte, int pixels)
{
bufferedImage.setRGB(Reihe, Spalte, pixels);
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(bufferedImage, 110, 73, this);
}
public BufferedImage getBuffImage()
{
return bufferedImage;
}
}
class MausGezogen extends MouseAdapter implements MouseMotionListener {
private int i = 0;
private boolean[] taste = new boolean[40];
private int index = 0;
Image img;
DedectMouseListener mausEvent = new DedectMouseListener();
public void mouseDragged(MouseEvent eventMove)
{
taste = mausEvent.gettasteGedrueckt();
index = mausEvent.getIndex();
if (index == 0) {
if (eventMove.getX() < 55 || eventMove.getX() > 90 || eventMove.getY() < 153 || eventMove.getY() > 188)
mausEvent.settasteGedrueckt(index);
}
if (index == 1) {
if (eventMove.getX() < 55 || eventMove.getX() > 90 || eventMove.getY() < 203 || eventMove.getY() > 238)
mausEvent.settasteGedrueckt(index);
}
if (index == 2) {
if (eventMove.getX() < 55 || eventMove.getX() > 90 || eventMove.getY() < 253 || eventMove.getY() > 288)
mausEvent.settasteGedrueckt(index);
}
tasteGedrueckt(index);
}
}
}
/* Klasse für Tastendrücke */
class DedectMouseListener extends MouseAdapter implements MouseListener {
private static int xPressed = 0;
private static int yPressed = 0;
private int xReleased = 0;
private int yReleased = 0;
static int index;
public static boolean[] tasteGedrueckt = new boolean[40];
int dX = 35;
int dY = 35;
public boolean[] gettasteGedrueckt()
{
return tasteGedrueckt;
}
public void settasteGedrueckt(int x)
{
tasteGedrueckt[x] = false;
System.out.println("Bereich überschritten: Taste " + x + " wurde auf " + tasteGedrueckt[x] + " zurückgesetzt");
index = 50;
}
public static int getIndex()
{
return index;
}
public static int getxPressed()
{
return xPressed;
}
public static int getyPressed()
{
return yPressed;
}
public void mousePressed(MouseEvent event)
{
xPressed = event.getX()-4;
yPressed = event.getY()-53;
for (int i = 0; i < 3; i++)
{
if (xPressed >= 35+i*50 && xPressed <= 35+i*50+dX) /* 12 Tasten links unten */
{
if (yPressed >= 355 && yPressed <= 355+dY)
{
tasteGedrueckt[i+8] = true;
index = i+8;
System.out.println("Die Taste " + (i+8) + " wurde gedrückt: " + tasteGedrueckt[i+8]);
}
if (yPressed >= 405 && yPressed <= 405+dY)
{
tasteGedrueckt[i+17] = true;
index = i+17;
System.out.println("Die Taste " + (i+17) + " wurde gedrückt: " + tasteGedrueckt[i+17]);
}
if (yPressed >= 455 && yPressed <= 455+dY)
{
tasteGedrueckt[i+24] = true;
index = i+24;
System.out.println("Die Taste " + (i+24) + " wurde gedrückt: " + tasteGedrueckt[i+24]);
}
if (yPressed >= 505 && yPressed <= 505+dY)
{
tasteGedrueckt[i+33] = true;
index = i+33;
System.out.println("Die Taste " + (i+33) + " wurde gedrückt: " + tasteGedrueckt[i+33]);
}
}
if (xPressed >= 205+i*50 && xPressed <= 205+i*50+dX) /* 8 Tasten in der Mitte unten */
{
if (yPressed >= 355 && yPressed <= 355+dY)
{
tasteGedrueckt[i+11] = true;
index = i+11;
System.out.println("Die Taste " + (i+11) + " wurde gedrückt: " + tasteGedrueckt[i+11]);
}
if (yPressed >= 405 && yPressed <= 405+dY && i == 1)
{
tasteGedrueckt[20] = true;
index = 20;
System.out.println("Die Taste 20 wurde gedrückt: " + tasteGedrueckt[20]);
}
if (yPressed >= 455 && yPressed <= 455+dY)
{
tasteGedrueckt[i+27] = true;
index = i+27;
System.out.println("Die Taste " + (i+27) + " wurde gedrückt: " + tasteGedrueckt[i+27]);
}
if (yPressed >= 505 && yPressed <= 505+dY && i == 1)
{
tasteGedrueckt[36] = true;
index = 36;
System.out.println("Die Taste 36 wurde gedrückt: " + tasteGedrueckt[36]);
}
}
if (xPressed >= 370+i*50 && xPressed <= 370+i*50+dX)
{
if (yPressed >= 355 && yPressed <= 355+dY)
{
tasteGedrueckt[i+14] = true;
index = i+14;
System.out.println("Die Taste " + (i+14) + " wurde gedrückt: " + tasteGedrueckt[i+14]);
}
}
}
for (int i = 0; i < 4; i++)
{
if (yPressed >= 100+i*50 && yPressed <= 100+i*50+dY)
{
if (xPressed >= 55 && xPressed <= 55+dX)
{
tasteGedrueckt[i] = true;
index = i;
System.out.println("Die Taste " + (i) + " wurde gedrückt: " + tasteGedrueckt[i]);
}
else if (xPressed >= 455 && xPressed <= 455+dX)
{
tasteGedrueckt[i+4] = true;
index = i+4;
System.out.println("Die Taste " + (i+4) + " wurde gedrückt: " + tasteGedrueckt[i+4]);
}
}
}
}
}
/* Klasse für die Verbindung */
class OutputThread extends Thread {
private int state = 10;
boolean stoprequested;
public int[] input = new int[8];
public int wertInput = 0;
int j= 0;
int k = 0;
int n = 0;
int p = 0;
int m = 0;
int spaltenausgabe = 0;
public OutputThread()
{
stoprequested = false;
}
public synchronized void requestStop()
{
stoprequested = true;
}
public void run()
{
try {
Socket sock = new Socket("10.0.0.196", 5900);
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
//InputStream inData = sock.getInputStream();
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
int[] datenInt = new int[100];
StringBuffer daten = new StringBuffer();
int m = 0;
while (stoprequested == false)
{
int getin = in.read();
}
}
}