# Bilder mit Tastatur steuern



## Saimen (24. April 2006)

Hallo!
Habe eine Frage:

Habe ein Programm, wo ich einzelne Bilder habe, denen ich Tasten zuordnen will. Ich drücke also F1 und komme zu dem Bild, F2 zu einem anderen usw. Ich bräuchte also eine Tabelle, wo dann steht;

Bild vorher || Taste - Befehl || Bild nachher

Kann ich sowas mit Java machen bzw. mit einer Excel Tabelle?
Kann man so etwas in nem normalen Editor machen?

Bitte helfen, Danke!

Gruß..


----------



## teppi (24. April 2006)

Ich bin dafür, dass der Java ist kein Java Script Thread irgendwie mit einer Art Leuchtreklame ausgestattet wird. 

Naja trotzdem ist deine Fragestellung irgendwie ein bissel daneben .. Was für ein Programm? Hast dus selbst geschrieben? Wenn ja, wo ist der Code .. usw. .. Woher soll man wissen was du überhaupt willst? Und wie kommst du da plötzlich auf Excel?


----------



## Saimen (24. April 2006)

Ich meinte natürlich Java, nicht JavaScript. Hab es editiert, Danke!


----------



## flashray (24. April 2006)

Hallo Saimen,

schau mal hier:


```
import java.awt.*;
import java.awt.event.*;
import java.io.PrintStream;

import javax.swing.*;

public class Tutorials_de_UserGallery extends JFrame implements FocusListener {

	private static PrintStream o = System.out;
	
	private JButton[] b = new JButton[12];

	private JPanel p = new JPanel();
	
	private JLabel l = new JLabel("Tutorials.de - Java Forum - User Galery",JLabel.CENTER); 
	
	public Tutorials_de_UserGallery() {
		super("User Galery");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationByPlatform(true);
		p.setLayout(new GridLayout(3, 4));

		for (int i = 0; i < b.length; i++) {
			b[i] = new JButton("User " + i);
			b[i].setPreferredSize(new Dimension(100, 100));
			b[i].setVerticalTextPosition(JLabel.CENTER);
			b[i].setBorder(BorderFactory.createRaisedBevelBorder());
			b[i].setContentAreaFilled(false);
			b[i].addFocusListener(this);
			p.add(b[i]);
		}

		b[0].requestFocusInWindow();
		b[0].setBorder(BorderFactory.createLoweredBevelBorder());

		Dimension dim = l.getPreferredSize();
		l.setPreferredSize(new Dimension(dim.width,dim.height * 3));
		
		this.add(l,BorderLayout.NORTH);
		this.add(p,BorderLayout.CENTER);
		this.pack();

		Toolkit.getDefaultToolkit().getSystemEventQueue().push(
				new EventQueue() {
					protected void dispatchEvent(AWTEvent event) {
						if (event instanceof KeyEvent) {
							KeyEvent keyEvent = (KeyEvent) event;
							if (keyEvent.getID() == KeyEvent.KEY_PRESSED) {
								JButton compFocusOwner = (JButton) KeyboardFocusManager
										.getCurrentKeyboardFocusManager()
										.getFocusOwner();
								switch (keyEvent.getKeyCode()) {
								case KeyEvent.VK_F1: {

									compFocusOwner.transferFocusBackward();
								}
									break;
								case KeyEvent.VK_F2: {
									compFocusOwner.transferFocus();
								}
								}
							}
						}
						super.dispatchEvent(event);
					}
				});

		this.setVisible(true);
	}

	public static void main(String[] args) {
		new Tutorials_de_UserGallery();
	}

	public void focusGained(FocusEvent e) {
		((JButton) e.getComponent()).setBorder(BorderFactory
				.createLoweredBevelBorder());
	}

	public void focusLost(FocusEvent e) {
		((JButton) e.getComponent()).setBorder(BorderFactory
				.createRaisedBevelBorder());
	}
}
```


Vg Erdal


----------



## Saimen (24. April 2006)

Danke für deine Hilfe @flashray, dachte schon, das kein produktiver Beitrag mehr zu diesem Thema kommt..
Habe noch ein paar Fragen dazu, da ich noch nicht sehr viel Erfahrung mit Programmieren.
Wo kann ich diesen Code einfügen und als was muss ich die Datei speichern. Wie bekommt man die Zahlen vor dem Code weg, oder muss ich die einzeln entfernen?


----------



## flashray (24. April 2006)

Hallo Saimen,

klicke einfach auf zitieren, dort wirst du dann den Code ohne Zahlen vorfinden.


Vg Erdal


----------



## Saimen (24. April 2006)

Ok, Danke.
Und wie kann ich den Code jetzt benutzen? Mit dem Editor, aber als was speichern.
Und wie arbeite ich dann damit?


----------



## flashray (24. April 2006)

Hallo Saimen,

wenn du eclipse noch nicht hast, lad dir es erstmal runter, und installier es bitte:
http://www.eclipse.org/downloads/

Anschließend würde ich dir empfehlen aus dem Onlinebuch Java Insel das erste Kapitel zu lesen:
http://www.galileocomputing.de/openbook/javainsel5/

Da wird alles grundlegende erklärt, auch wird auf die Benutzung von eclipse, das erstellen eines ersten Projektes, das starten eines ersten Programms ausführlich erläutert.


Vg Erdal


----------



## Saimen (24. April 2006)

Alles klar, werde das morgen früh ausprobieren, ich danke dir für deine Hilfe!

MfG Saimen


----------



## flashray (24. April 2006)

Hallo Saimen,

wie weit bist du denn mit Java vertraut?

Hier nochmal in Kürze: (Damit dir vor lauter lesen in der Java Insel, der Spaß an Java nicht vergeht  )
1. Quelltext abspeichern als dateiname.java
2. Kompilieren mit: -> javac dateiname.java
3. Starten mit -> java dateiname

Starten über Komandozeile:
http://www.galileocomputing.de/openbook/javainsel5/javainsel01_007.htm#Xxx999378

Starten aus einer IDE, hier Eclipse:
http://www.galileocomputing.de/open...sel01_008.htm#Rxx747java01008040000581F023100


Vg Erdal


----------



## teppi (24. April 2006)

Ich halts für wenig sinnvoll .. Er sollte imho erstmal die Basics lernen. Alles was er sagt lässt darauf schließen, dass er nicht die geringste Ahnung von Java hat. Deshalb wäre ein "HelloWorld" wohl angebrachter .. 

Gruß Stefan


----------



## Saimen (24. April 2006)

flashray hat gesagt.:
			
		

> Hallo Saimen,
> 
> wie weit bist du denn mit Java vertraut?
> 
> ...



Danke dir, denke das wird mir weiterhelfen! Sehr nett von dir!

Gruß Saimen


----------



## Thomas Darimont (25. April 2006)

Hallo!

ich denke der post von flashray löst das Problem nicht ganz... eigentlich war ja verlangt, dass man eine Tasten-Bild Zuordnung anlegen kann... z.Bsp. A-> Bild1, B-> Bild2, C-> Bild2 ... das kannst du ganz einfach über eine entsprechende Map (ID -> Bild, oder ID -> JLabel) erreichen. Weiterhin würde ich hierbei nicht den "Hack" über eine eigene EventQueue gehen... das macht man nur bei AnwendungsGlobalen HotKeys.... wenn die KeyBindings nur auf einer Komponente gültig sein sollen, reicht auch ein ganz einfacher KeyListener/KeyAdapter an der entsprechenden Komponente. Weiterhin würde ich die selektierten Komponenten nicht in den Fokus setzten sondern einfach nur einen entsprechenden Border an ausschalten. Das setzt natürlich ein wenig Bookkeeping vorausw elche Komponente als letzte Selektiert war. Den Fokus kann man zwar dazu mißbrauchen aber damit erkauft man sich den Nachteil, dass wenn die Komponente einmal fokussiert ist die KeyEvents zur fokussierten Komponente wandern und nicht mehr an unseren Container. 

@flashray ... ich würde mal dieses  private static PrintStream o = System.out; aus dem Template herausnehmen, das ist absolut unnötig. Unter Eclipse reicht ein einfaches sysout + Strg+ Space um ein 
System.out.println(); zu erzeugen...

Gruß Tom


----------



## flashray (25. April 2006)

Hallo Tom,



			
				Thomas Darimont hat gesagt.:
			
		

> ich denke der post von flashray löst das Problem nicht ganz... eigentlich war ja verlangt, dass man eine Tasten-Bild Zuordnung anlegen kann... z.Bsp. A-> Bild1, B-> Bild2, C-> Bild2


Aso, hatte verstanden das Saimen mit F1 und F2 zum vorherigen oder nächsten Bild möchte  .




			
				Thomas Darimont hat gesagt.:
			
		

> Weiterhin würde ich hierbei nicht den "Hack" über eine eigene EventQueue gehen... das macht man nur bei AnwendungsGlobalen HotKeys....


Wollte mal den neugelernten EventQueue anwenden   .



			
				Thomas Darimont hat gesagt.:
			
		

> @flashray ... ich würde mal dieses  private static PrintStream o = System.out; aus dem Template herausnehmen, das ist absolut unnötig. Unter Eclipse reicht ein einfaches sysout + Strg+ Space um ein
> System.out.println(); zu erzeugen...


Das mit dem sysout kenne ich auch seit ein paar Tagen, aber der Befehl System.out.println() ist doch unnötig lang, netter und kürzer ist finde ich o.println()   .


Vg Erdal


----------



## Saimen (25. April 2006)

Brauche ich dieses Eclipse, oder geht es auch ohne. Kann die Datei irgendwie gerade nicht downloaden..


----------



## flashray (25. April 2006)

Hallo Saimen,

kommt drauf an was und wieviel du mit Java vorhast.

Auf jeden Fall brauchst du um ein Java Programmm Kompilieren und Auszuführen zu können ein Java SDK.

Einfach hier die Java Software runterladen und installieren:
(Windows (Offline Installation))
http://www.java.com/de/download/windows_xpi.jsp

Wenn du dieses runtergeladen und installiert hast kannst, du in einem beliebigen Editor einen Java Quellcode schreiben und als dateiname.java abspeichern. Dann in der Doskonsole mit javac dateiname.java kompilieren und schließlich mit java dateiname ausführen.

Da dieses kompilieren und ausführen über die Doskonsole umständlich und aufwändig ist, und ein Texteditor keine Hilfestellung beim Programmieren bietet, ist es ratsam eine IDE beispielsweise Eclipse zu nutzen, der einem sehr viel Arbeit abnimmt und intensiv unterstüzt.


Sag mal, für was brauchst du denn dieses Programm? Für die Schule, Hobby, möchtest programmieren lernen?


Ich rate dir bevor du hier noch weitere ähnliche Fragen stellst, solltest du dich wirklich zuerst in einem Javabuch einlesen. Die ersten paar Kapitel lesen, und nebenbei Fragen, sonst bringt das hier wenig.

Im Internet gibt es sehr viele interessante gute Doku zu Java. Ich stell dir mal zwei Onlinebücher vor. Schau dir beide mal an. Und lies dich bei einem ein. Beide führen einen Programmieranfänger Schritt für Schritt an die Programmiersprache Java heran.

Java ist auch eine Insel
http://www.galileocomputing.de/openbook/javainsel5/

Handbuch der Java-Programmierung
http://www-sst.informatik.tu-cottbus.de/~an/Books/HJP/html/cover.html


Wenn du deine Forums-Hausaufgaben einigermaßen gemacht haßt können wir bald hier wieder fortfahren   .
1. Java SDK runterladen installieren
2. Eclipse runterladen installieren
3. Die ersten Kapitel eines der oben genannten Bücher lesen


Wenn das deine ersten Programmiererfahrungen sind, solltest du wie schon Stefan gesagt hat, mein Programmbeispiel vergessen und dir zuerst ein Helloworld Programmbeispiel anschauen. Alles weitere ist zur genüge den genannten Javabüchern abgehandelt, also meinerseits noch viel Spaß beim lesen und erforschen von Java  .

Vg Erdal


----------



## teppi (25. April 2006)

Moin,

das Einzigste, was du wirklich brauchst ist das JDK und das kannste hier runterladen:

http://java.sun.com/j2se/1.5.0/download.jsp

Da musst du auf "Download JDK 5.0 Update 6" klicken .. 

Danach kannst du das Programm im Prinzip mit einem Texteditor bearbeiten. Das Compilieren usw. geht alles über die Konsole, wie in dem Link oben schon von flashray beschrieben.

Ich würde erst einmal klein anfangen, genug Links wurden oben schon gepostet.

Gruß Stefan

/Edit sagt: Super .. da schreib ich schon mal mehr als zwei Zeieln und Erdal kommt mir wieder zuvor .. grmbl


----------



## Saimen (25. April 2006)

Danke für deinen hilfreichen Beitrag @ flashray, denke der wird mir weiterhelfen.
Ist eine Aufgabe bei meinem Praktikum als Informatiker. Bis ich so etwas selbst schreiben kann, also in Büchern lese usw. reicht meine Zeit als Praktikant sicher nicht aus. Deine beiden Bücher werde ich mir jedoch mal angucken, vielleicht lerne ich ja etwas daraus, was ich weiterhin anwenden kann! Danke!


----------



## Saimen (25. April 2006)

_Der Befehl "javac" konnte nicht gefunden werden._

Habe Java installiert und es so abgespeichert und eingegeben wie du es beschrieben hast. Warum kommt jetzt diese Fehlermeldung?


----------



## teppi (25. April 2006)

Du hast dir das JRE und nicht das JDK heruntergeladen. 

JRE = Java Runtime Edition (ohne Compiler)
JDK = Java Development Kit (mit Compiler) 

Gruß Stefan

/€ : *hust* Ich meine natürlich Java Runtime Environment


----------



## Saimen (25. April 2006)

Ok, danke, dann installier ich mal das andere.


----------



## Saimen (25. April 2006)

Glaube wenn ich mit dieser Aufgabe fertig bin, können wir alle ne Flasche Sekt aufmachen...

Also ich habe jetzt auch die JDK heruntergeladen und installiert, die Fehlermeldung kommt aber weiterhin. Was mach ich denn falsch?


----------



## teppi (25. April 2006)

Normalerweise sollten bei der Installation die entsprechenden Umgebungsvariablen gesetzt worden sein. 

Nunja whatever .. probier mal in der Konsole:

SET JAVA_HOME=Wurzelverzeichnis des JDK 

also bspw: 

SET JAVA_HOME=C:\JDK1.5 oder so .. 

und dann halt gleich im Anschluss: 
javac usw. ...

Um diese Umgebungsvariable dauerhaft zu setzen musst du bei Win XP unter Systemeigenschaften auf den Reiter Erweitert und dann auf "Umgebungsvariablen" klicken .. Dort kannst du solche Variablen hinzufügen .. 

Gruß Stefan


----------



## flashray (25. April 2006)

Hallo Saimen,

wenn du das JDK installiert hast ist es noch nicht im gesamten System verfügbar.

Wenn du Windows XP benutzt musst du folgendes machen.

Gehe zu:
Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen

Wenn du die Umgebungsvariablen geöffnet hast, wirst du dort einen Bereich:
-> Systemvariablen
finden

Hier müsste nun unter anderem ein Eintrag 
->path 
sein.

Diesen tust du bearbeiten. D.h. du fügst an den Anfang dieser path Variable folgende Zeile:
C:\Programme\Java\jdk1.5.0_04\bin;

Natürlich kann bei dir dieser Pfad etwas anders aussehen, wenn du eine andere Version hast oder das JDK in einem anderen Pfad installiert hast. Also suche im Arbeitsplatz den Pfad bis zum Ordner bin in deinem JDK und trage diesen in die path Variable ein.

Danach müsste javac eigentlich erreichbar sein  .

Vg Erdal


----------



## Saimen (25. April 2006)

Danke, habe ich versucht, kann aber den Eintrag "path" nicht bearbeiten.


----------



## flashray (25. April 2006)

Einfach einmal auf path klicken und path markieren. Dann siehst du dort einen Button "bearbeiten". Wenn du den anklickst öffnet sich ein neues Fenster in dem du path editieren kannst.

Vg Erdal


----------



## Saimen (25. April 2006)

Nein, das habe ich ja versucht, aber "path" ist bei den Systemvariablen und die Systemvariablen kann ich alle nicht bearbeiten. Es gibt einmal die Systemvariablen und einmal die Benutzervariablen. Die Benutzervariablen kann ich bearbeiten. Kann ich keine neue in den Benutzervariablen anlegen?


----------



## flashray (25. April 2006)

Ich glaube du bist nicht als Administrator angemeldet, von daher kannst du keine Systemvariablen setzen.

Leg einfach mal eine neue path Variable in den Benutzervariablen wie von dir vorgeschlagen an. Müsste dann eigentlich für deinen Account logischerweise funktionieren. Versuchs einfach mal.


----------



## Saimen (25. April 2006)

Was muss ich bei _Dateityp_ und _Codierung_ eingeben?


----------



## flashray (25. April 2006)

Name der Variablen: path
Wert der Variablen: C:\Programme\Java\jdk1.5.0_04\bin;

wobei wie schon gesagt der Pfad "C:\Programme\Java\jdk1.5.0_04\bin;" kann von Installation zu Installation abweichen.


Vg Erdal


----------



## Saimen (25. April 2006)

Ja, war er auch, der Pfad ist bei mir:

C:\Programme\Java\jdk1.5.0_06\bin;

Habe alles so gemacht wie beschrieben, aber es  immernoch nicht..

Und wie muss es beim editor abspeichern, was kommt da in;


- Dateityp und
- Codierung?


----------



## flashray (25. April 2006)

Bei der Kodierung, einfach die Standart kodierung nehmen, das wäre beispielsweise beim Microsoft Editor ANSI.

Der Dateityp ist java. Einfach im MS Editor mit dem namen meinprogramm.java abspeichern, weiterhin sollte unten alle Dateien ausgewählt sein. Sonst macht der MS Editor daraus eine Textdatei.


Vg Erdal


----------



## Saimen (25. April 2006)

Der Editor macht trotzdem eine Textdatei draus.. Wenn alle dateien aktiviert habe, öffnet er es in einem Internet Explorer..


----------



## teppi (25. April 2006)

flashray hat gesagt.:
			
		

> wenn du das JDK installiert hast ist es noch nicht im gesamten System verfügbar.


 
Afaik werden bei der Installation die entsprechenden Variablen schon regsitriert. Nur scheints daran zu scheitern, dass er keine Adminrechte hatte bei der Installation. 

@ Saimen: Am besten du fragst jemanden mit Adminrechten, ob er dir nochmal das JDK installieren kann. Dann werden die Dateitypen usw. gleich richtig verknüpft sowie die richtigen Umgebungsvariablen gesetzt.

Gruß Stefan


----------



## Saimen (25. April 2006)

teppi hat gesagt.:
			
		

> Afaik werden bei der Installation die entsprechenden Variablen schon regsitriert. Nur scheints daran zu scheitern, dass er keine Adminrechte hatte bei der Installation.
> 
> Gruß Stefan



Doch, die Installation habe ich über den Administrator gemacht, weil ich als Benutzer noch nicht mal das Recht zum installieren von Dateien habe


----------



## flashray (26. April 2006)

Hallo Saimen,

eine java-Datei soll sich natürlich auch mit einem texteditor öffnen lassen. Sonst könntest du es nicht editieren  .

Wenn du allerdings eine Javaapplikation starten möchtest. Geht das zunächst nur über die Doskonsole oder auch aus einer IDE, wie schon vielfach beschrieben.

Also nochmals Saimen,

1. Doskonsole (MS - Eingabeaufforderung) öffnen.
2. In den Ordner wechseln mit cd
3. Mit javac kompilieren
4 Dann mit java ausführen

Wenn du allerdings eclipse nutzen würdest, könntest du dir diese Schritte sparen, ein einfacher Buttonklick würde reichen.


Vg Erdal


----------



## Saimen (26. April 2006)

Also ich fang jetzt noch mal von vorne an.
Ich öffne einen Texteditor, kopier deinen Code und füge ihn dort ein.
Ich speichere die Datei nun unter qwertz.java, Dateityp = Alle Dateien, Codierung = ANSI (Standart)
Die Datei speichere ich auf dem Desktop.
Danach Ausführen, cmd.exe
Dort gebe ich ein: javac qwertz.java
Danach dauert es ca. 5 Sekunden, dann kommt:

_error: cannot read: qwertz.java
1 error_

Habe mir jetzt NetBeans 5.0 runtergeladen, versuche mal ob ich damit irgendetwas machen kann.


----------



## flashray (26. April 2006)

Hallo Saimen,

die Datei muss den gleichen Namen haben, wie der Klassenname aus dem Quellcode. Hier wäre das dann: Tutorials_de_UserGallery.java . Auch auf Groß und klein Schreibung achten.


Vg Erdal


----------



## Saimen (26. April 2006)

*Es funktioniert, es funktioniert!*
Habe die Datei danach mit java dateiname aufrufen können.
Sooo...Jetzt habe ich eine Daite mit User 1, User 2... User 10. Die einzelnen Felder kann ich jetzt anklicken. Kann ich damit die Bilder der Tastatur zuordnen, oder ist das was anderes?
Wenn ja, wie gehts das?


----------



## flashray (26. April 2006)

Glückwunsch! Du kannst hier mit F1 und F2 vorwärts und rückwärts die Bilder durchlaufen.

Vg Erdal


----------



## Saimen (26. April 2006)

Ja, das klappt. Wie kann ich die Datei, also _Tutorials_de_UserGallery_ zu nem neuen Dateinamen machen? Habe alle derartigen Begriffe in der Datei editiert und ersetzt, die Datei selbst natürlich auch, aber die Überschrift ist immernoch wie vorher..


----------



## flashray (26. April 2006)

Dann schau mal genau hin, irgendwo steht dieser Text noch, den musst du ändern. Dein Editor hat doch eine Suchfunktion  .

Vg Erdal


----------

