keylistener hat keinen fokus oder: listener ohne frame?

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
hallo,

ich habe eine Klasse:

Code:
class Console extends JFrame implements Runnable, KeyListener{
   
   public Console() {
        addKeyListener(this);
        setFocusable(true);
    }

   public void trigger() {
        if (!isVisible()) {
            setVisible(true);

        } else {
            setVisible(false);
            dispose();
        }
    }

   ...

    public void keyTyped(KeyEvent e) {
        trigger();
    }

}

Allerdings reagiert sie nicht auf Eingaben, d.h. sie hat keinen Fokus. Das funktioniert nur, wenn das
Fenster geöffnet ist und markiert, dann schliesst es sich bei Tastendruck.
Wenn es allerdings nicht da ist, kann ich es nicht per Tastendruck öffnen..

Ich dachte dieses setFocusable(true) sorgt dafür, dass ich es kann? Habe es auch schon mit
getContentPane().setFocusable(true) versucht aber geht auch nicht...

Wie muss ich das denn jetzt machen?

edit:

beim versuch es anders zu lösen ist mir grad was aufgefallen, was ich bisher gar nicht so realisert hatte:
wieso kann den bitte schön ein thread keinen keylistener haben?

ich meine kann man denn nicht ein prog schreiben dass einfach auf tastendruck was macht, ohne ein fenster zu haben, in etwa so:

Code:
public class Prog extends Thread implements KeyListener{

       addKeyListener(this)    // <-- Wieso geht das nicht ??

       public void run{

              while(true){
                    sleep(10);
              }
       }

       public keyTyped(KeyEvent e){
       
              System.out.println("Taste gedrückt");
       }
}

Is sowas nich möglich, kann ja eigentlich nicht sein oder?
 

hdi

Top Contributor
hallo, könnt ihr mir nicht helfen? hab ich die fragestellung vllt so dumm gewählt?

Wie kann ich es machen, dass ich während der Laufzeit des Programms per Tastendruck ein Fenster schliessen UND öffnen kann? Das muss doch gehen ???:L
 

0x7F800000

Top Contributor
Naja, die Frage ist mir eigentlich klar, allerdings ist mir nicht so ganz klar, wozu ein solches programm gut sein könnte, ausser den Benutzer zum Amoklauf zu zwingen? Also, ich meine, stell dir doch mal vor, dass dein fenster jedes mal erscheint, wenn irgendwas gedrückt wird, das wär doch der obergau, was die benutzerfreundlichkeit angeht. Ausserdem: wenn dein Fenster inaktiv ist, welchen grund hätte das ganze system drumherum, irgendwelche ereignisse ausgerechnet an dein programm weiterzuleiten. Wenn es gar kein Fenster gibt, dann macht es imho noch weniger sinn.
 

hdi

Top Contributor
Okay, also die Idee ist diese hier:

Ich habe eine Konsole, das ist nichts anderers als eine Klasse extends JFrame, also ein Fenster.
Diese Konsole ist nur für mich zu Debugging-Zwecken, sie zeigt mir in Realtime Ereignisse im Programm etc.

Jetzt ist es so dass ich dieses Fenster nicht unbedingt dauernd vor mir haben will weil es zB mein eigentliches
Programm überdeckt und ich hab halt keinen 22" Bildschirm.

Und das Fenster soll natürlich nicht bei jeder beliebigen Taste kommen, zB bei "^" oder so (typisch für Konsolen)

D.h. ich will während der Laufzeit dieses Fenster ebne ein- und ausblenden lassen.

Ausblenden kann ich es ja per Tastendruck, wenn es grad aktiv und markiert ist. Aber dann ist es halt weg.
Und ich will es wieder haben, ohne das Programm neu starten zu müssen (was auch keinen Sinn machen würde,
weil dann alle Logs weg sind)

Ich meine sowas macht doch auf jeden Fall Sinn, auch in anderen Anwendungsgebieten. Wieso sollte
man einem Programm nicht sagen können: Wenn ich x drücke, machst du y?

Wieso braucth man dazu ein Fenster mit Fokus, als ob man Tastatureingaben nur über Fenster sinnvoll nutzen könnte..


Also ich meine, geht das jetz echt nicht oder was :autsch:
 

0x7F800000

Top Contributor
Ähm... Ich weiß es nicht, so toll kenn ich mich da jetzt auch nicht aus, aber imho wäre das eher irgendeine betriebssystemspezifische sache, und man müsste für das programm irgendeinen tastaturkürzel definieren oder so...

Ansonsten: was für ein betriebssystem hast du? falls es das verkrüppelte Vista o.ä sein soll: tja, da kann ich dir leider auch nicht sagen, warum die leute es für so clever halten, genauso viel Platz zur verfügung zu stellen, wie die physikalische grenzen des Bildschirmes das erlauben. :autsch:
Etwa bei ubuntu habe ich 6 verschiedene virtuelle desktops. Zwischen den kann man dann auch super mit pfeiltasten hin und her navigieren. Auf einem läuft dann pidgin, auf dem anderen ist firefox mit emails, im dritten ist firefox mit java api und den ganzen java foren und ähnlichen geschichten, im weiteren ist eclipse offen, im fünften sind dann die fünfzig GIMP-fensternchen (unter vista unmöglich zu handhaben :shock: ) und zur guter letzt noch der FTP client, und irgendwo neben den instant messenger kann man dann noch nebenbei musik abspielen oder sowas. Nerviges fenster umschalten ist gar nicht nötig. das fin ich einfach so geil, das ist eigentlich der hauptgrund, warum ich unter Vista klaustrophobische anfälle kriege... :roll:

=> Vielleicht liegt dein Problem einfach an den unnötigen Platz-Einschränkungen?
 

hdi

Top Contributor
also erstmal schiesst die diskussion ja am thema vorbei. du kannst ja nicht java dafür entschuldigen, dass es in vista keine virtuellen desktops gibt.
wie gesagt es gibt hunderte guter beispiele wofür man ein java programm mit einem keylistener verbindet, obwohl man kein fenster hat.

ich weiss ja dass java nich so systemnah ist, aber dass es gar nicht geht? schon sehr schwach...

aber zu deiner frage: ich nutze xp, mag vista auch nicht aber aus anderen gründen. es gibt aber für xp (und sicher auch für vista) tools die einen virtuellen desktop simulieren, is dann das gleiche wie ubuntu.

insgesamt kann man bei den ganzen linux sachen jeden shit machen, aber willste mal musik hören, ein video ansehen, oder etwas spielen musst du dich (zumindest beim ersten mal) stunden wenn nicht tage damit beschäftigen.

open source is immer gut, aber windows ist noch immer besser als linux im sinne von einem betriebssystem, dass typische betriebssystem eigenschaften erfüllt, wie zB benutzerfreundlichkeit udn kompatibilität ;)

naja wegen der sache jetzt, ich werd später im programm wohl eh immer ein fenster offen haben, dann implementier ich darüber den listener. finds aber echt mal hart. was is wenn ich eine aufwendige datenanalyse etc mit java machen will, die im hintergrund läuft, und wo ich mir dann nur immer wieder wann ich lust hab das zwischenergebnis abrufen will?

solange nicht immer irgendwo ein fenster offen ist, geht das nicht obwohl das programm als eigenständiger prozess läuft, das is ma :bloed:..

bin grad mitm vordiplom fertig und überleg mir halt jetz ob ich mich auf c++ oder java spezialisieren mag. deshalb interessiert es mich schon ob sowas in java wirklich schlicht unmöglich ist. weil wenn ja spricht das nich grad für java ;)
 
G

Gast2

Gast
Moin,

hdi hat gesagt.:
ich weiss ja dass java nich so systemnah ist, aber dass es gar nicht geht?
da Du ja schon mal festgestellt hast das es nur Systemnah geht ... hast Du schon mal versucht mit anderen Programmiersprachen Dein Problem zu lösen ... da Du Dich ja auf C++ spezialisieren willst ... es funktioniert nicht ... weil Windows scheiße ist ... es funktioniert noch nicht mal nativ mit C++ so wie Du es machen willst ... also mecker hier nicht über Java rum wenn Du null Ahnung hast

das ganze funktioniert nur mit Hotkeys


insgesamt kann man bei den ganzen linux sachen jeden shit machen, aber willste mal musik hören, ein video ansehen, oder etwas spielen musst du dich (zumindest beim ersten mal) stunden wenn nicht tage damit beschäftigen
komisch das gleiche Problem hatte ich als ich von Amiga-OS auf Windows umgestiegen bin ... alles anders ... stundenlang, tagelang, wochenlang mit Problemen auseinander gesetzt

open source is immer gut, aber windows ist noch immer besser als linux im sinne von einem betriebssystem, dass typische betriebssystem eigenschaften erfüllt,
woher willst Du das wissen wenn Du Dich nicht mit Linux auseinander gesetzt hast? ... mal abgesehen davon habe ich ein Problem mit Konzernen die die halbe ISO unterstützt um ein "offenes" Format durchzudrücken was über 5500 Seiten hat und nicht implementierbar ist ... nur damit man auf die Packung drucken kann "ISO zertifiziertes offenen Dokumentenformat"

wie zB benutzerfreundlichkeit udn kompatibilität ;)
deshalb bekomme ich regelmäßig das Kotzen auf Arbeit wenn ich wieder mal einen Windows-Rechner einrichten muss ... mit ganzen 3 Benutzern ... die alle die gleichen Einstellungen benötigen aber unterschiedliche Rechte haben ... das funktioniert nicht mal so einfach

Linux installiert - funktioniert ... gut musst nur das "richtige" Linux erwischen ... Gentoo ist wohl etwas fordern am Anfang :roll:

naja wegen der sache jetzt, ich werd später im programm wohl eh immer ein fenster offen haben, dann implementier ich darüber den listener. finds aber echt mal hart. was is wenn ich eine aufwendige datenanalyse etc mit java machen will, die im hintergrund läuft, und wo ich mir dann nur immer wieder wann ich lust hab das zwischenergebnis abrufen will?
das dies ein Windows-Problem ist erwähnte ich wohl schon weiter oben ... suche danach wie man Hotkeys programmiert ... definiere ein Hotkey :arrow: *juhu* ... ich weis jetzt nicht ob Java da etwas anbietet ... wenn nicht muss Du JNI (?) verwenden ... alternativ kannst Du auch ein trayicon programmieren ... doppelklick drauf :arrow: Fenster öffnet sich ... viele Wege führen nach Rom?!

bin grad mitm vordiplom fertig und überleg mir halt jetz ob ich mich auf c++ oder java spezialisieren mag. deshalb interessiert es mich schon ob sowas in java wirklich schlicht unmöglich ist. weil wenn ja spricht das nich grad für java ;)
das spricht für Deine fehlende Fähigkeit Dich mit Problemen auseinander zu setzen und alle Möglichkeiten auszuprobieren bevor man sich minderwertig über irgend welche Sprachen ausläßt ... und bevor Du wieder meckerst - ja ich kann C++[/CLI] und verwende zusätzlich .NET in der Firma ... Java mache ich ab und zu mal in der Firma (vorwigend Applets) ... PHP & SQL habe ich auch schon mal angeschaut ... kann somit von allen Sprachen deren Einsatzgebiet ungefähr bestimmen ... mit C++ oder Java alleine kannst Du nicht alle Probleme lösen

wenn Du Dich auf eine Sprache spezialisierst hast Du übrigens ein Problem ... Du siehst nicht alle Möglichkeiten um ein Problem zu lösen

dennoch hand, mogel
 

0x7F800000

Top Contributor
wie gesagt es gibt hunderte guter beispiele wofür man ein java programm mit einem keylistener verbindet, obwohl man kein fenster hat
Öhm? Außer Keylogger fällt mir ehrlichgesagt nichts ein. Und der Einsatz von so einem Programm ist je nach Situation entweder zumindest moralisch bedenklich, oder schlicht und einfach strafbar. Nenn mir doch mal bitte sonst irgendein programm, das eigenwillig irgendwelche tasten-ereignisse vor dem betriebssystem abfängt und diese sinnvoll verwendet. Also, mir ist bisher keins begegnet, aber gut, ich hab ja auch kein Vordiplom ;) , bzw kann in Deutschland prinzipiell keinen mehr bekommen^^
bin grad mitm vordiplom fertig und überleg mir halt jetz ob ich mich auf c++ oder java spezialisieren mag
Der erste Teil des satzes passt mit der etwas plumpen idee im zweiten Teil des Satzes irgendwie nicht wirklich zusammen (wenn man das in Kombination mit dem seltsamen Grund der ganzen diskussion hier betrachtet), findest du nicht? C++ und Java sind, von der einfacheren Syntax abgesehen, sehr unterschiedlich konzipierte Sprachen mit völlig verschiedenen Einsatzgebieten. Das ist doch irgendwie total absurd, sich zwischen den zwei sprachen anhand von diesem merkwürdigen problem zu entscheiden?
Außerdem ist es sowieso unsinnig, sich auf "eine" sprache konzentrieren zu wollen. Um Java drumherum braucht man eh noch ein Dutzend weitere, um das rad nicht neu zu erfinden... Und außerdem: mit einer einzigen Sprache wär's doch sowas von langweilig ;)
 

hdi

Top Contributor
@mogel

Ich habe nur meine persönliche Empfindung über manche Dinge gesagt, bzw. dieser Thread hier ist eine Fragestellung gewesen! Sowas ist in einem Anfänger-Forum üblich. Und du flippst hier regelrecht aus, knallst mir Dinge an den Kopf obwohl du mich überhaupt nicht kennst, und scheinst nicht genug davon zu bekommen, mir zu sagen was für ein Trottel ohne Wissen und Vorurteile ich denn bin und was Windows für ein hässliches Kinder-Programm ist.
Du schiesst mal voll am Thema vorbei, und vllt warst du ja etwas aggro, aber lies dir doch deinen Post selber nochmal durch.. Komm mal runter bitte :gaen:

@andray

Also ich habe nie gesagt, dass ich jetzt wegen dieser einen Sache Java wegwerfe und nur noch C++ mache ;)
Ich bin eig. schon der Meinung, dass man eines der beiden besser können sollte bzw. sich darauf spezialisieren. So ist das eig. auch meistens, soweit ich das jetzt mitbekommen habe. Klar du setzt c++ immer für ganz bestimmte anwendungen ein (spiele,...) und java immer für andere. Aber dann lernst du halt einfach die eine sprache sehr gut und konzentrierst dich eben auf diese anwendungen, die damit besser realisierbar sind.
jobs gibt es genug ;)

Aber du hast eig. schon recht, soviel Sinn macht es nicht unbedingt Tastatur-eingaben abzufangen ohne irgendein Interface oder so einfach nur im Hintergrund. Ich dachte halt, vllt geht sowas, aber ich meine ich kann das Fenster ja auch immer minimieren/maxieren statt zu schliessen und öffnen.

Oder geht das auch nicht, weil es dann wieder nich den Fokus hat?
 

0x7F800000

Top Contributor
Sry, ich habe mal irgendwo gesehen, dass man bei windows irgendeinen merkwürdigen script oder irgendwelche makros definieren konnte, die etwa auf tastendruck alle Fenster nebeneinander angezeigt haben, wie beim Mac. Damit könnte man bestimmt auch irgendwie einstellen, dass es bei einer bestimmten tastenkombination deine konsole maximiert oder minimiert. Allerdings finde ich nichts mehr zu dem thema, selbst google liefert nur haufenweise unbrauchbaren müll (Windows Hilfe und Support liefert selbstverständlich noch größeren müll, der nicht mal die Stichwörter enthält^^)

Vielleicht kann hier jemand anders mal sagen, wie man unter windows solche etwas komplexere makros definieren kann? :autsch:

Oder geht das auch nicht, weil es dann wieder nich den Fokus hat?
Wie gesagt, ich glaube nicht... Solang dein Fenster keinen Fokus hat, kriegt's vom Betriebssystem einfach nichts weitergeleitet, und zu irgendeinem anderen verhalten lässt sich vista anscheinend nicht so einfach überreden, da kannst du mit java machen was du willst...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
M KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
N Java Keylistener Java Basics - Anfänger-Themen 2
B KeyListener funkioniert nicht Java Basics - Anfänger-Themen 2
F KeyListener Java Basics - Anfänger-Themen 3
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
S Keylistener Java Basics - Anfänger-Themen 16
S Keylistener im Grafikfenster Java Basics - Anfänger-Themen 3
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
N KeyListener in Thread Java Basics - Anfänger-Themen 0
LexeB4F for schliefe in KeyListener Java Basics - Anfänger-Themen 3
R KeyListener auslagern Java Basics - Anfänger-Themen 3
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
Z KeyListener funktioniert nicht? Weshalb? Java Basics - Anfänger-Themen 8
T KeyListener Java Basics - Anfänger-Themen 2
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8
J KeyListener - mal wieder... Java Basics - Anfänger-Themen 2
TheSorm KeyListener Problem Java Basics - Anfänger-Themen 4
M KeyListener Java Basics - Anfänger-Themen 3
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
L Input/Output Java 3D mit KeyListener Java Basics - Anfänger-Themen 1
S KeyListener reagiert nicht. Java Basics - Anfänger-Themen 4
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
B KeyListener als allgemeine Methode Java Basics - Anfänger-Themen 5
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
0 KeyListener ausserhalb der Applikation Java Basics - Anfänger-Themen 5
G KeyListener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
J KeyListener funtioniert nicht! Java Basics - Anfänger-Themen 3
J KeyListener Java Basics - Anfänger-Themen 11
P Input/Output KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
G KeyListener, Fokus Java Basics - Anfänger-Themen 8
K Input/Output KeyListener funktioniert nicht Java Basics - Anfänger-Themen 3
A Input/Output Keylistener Aktiv schalten Java Basics - Anfänger-Themen 8
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
S KeyListener Java Basics - Anfänger-Themen 2
A Erste Schritte Problem mit KeyListener Java Basics - Anfänger-Themen 6
Maxim6394 KeyListener geht nicht Java Basics - Anfänger-Themen 15
A Wie KeyListener adden? Java Basics - Anfänger-Themen 15
Maxim6394 KeyListener funktioniert nicht Java Basics - Anfänger-Themen 20
U KeyListener StackOverflowError Java Basics - Anfänger-Themen 2
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Apfel-Spiel KeyListener Java Basics - Anfänger-Themen 33
J KeyListener (keyTyped) funktioniert nicht Java Basics - Anfänger-Themen 9
Luk10 KeyListener Java Basics - Anfänger-Themen 13
S KeyListener aus anderer Klasse hinzufügen Java Basics - Anfänger-Themen 19
P KeyListener im Applet Java Basics - Anfänger-Themen 2
S KeyListener-Anwendung Java Basics - Anfänger-Themen 7
O KeyListener funktioniert nur wenn er will Java Basics - Anfänger-Themen 2
A KeyListener funzt ned Java Basics - Anfänger-Themen 6
D KeyListener, Unterscheidung Groß/Kleinbuchstaben Java Basics - Anfänger-Themen 3
S KeyListener als class? Java Basics - Anfänger-Themen 4
F Applet mit KeyListener, "Alt"-Taste und Konflikt mit Browser Java Basics - Anfänger-Themen 2
P KeyListener Java Basics - Anfänger-Themen 2
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
Z Globaler Keylistener Java Basics - Anfänger-Themen 2
V KeyListener Beispiel Java Basics - Anfänger-Themen 13
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr Java Basics - Anfänger-Themen 2
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
D KeyListener, nichts passiert Java Basics - Anfänger-Themen 6
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
D Keylistener zu langsam Java Basics - Anfänger-Themen 7
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
G Keylistener in einer Schleife Java Basics - Anfänger-Themen 9
M problem mit keylistener Java Basics - Anfänger-Themen 2
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
N KeyListener ohne GUI? Java Basics - Anfänger-Themen 5
M KeyListener Java Basics - Anfänger-Themen 3
T KeyListener wird nicht ausgelöst Java Basics - Anfänger-Themen 6
O KeyListener Java Basics - Anfänger-Themen 8
Developer_X KeyListener ohne JFrame Java Basics - Anfänger-Themen 13
H KeyListener Java Basics - Anfänger-Themen 4
Developer_X KeyListener Actions (hat mit Java3D zu tun) Java Basics - Anfänger-Themen 20
H KeyListener funktioniert nicht Java Basics - Anfänger-Themen 8
Developer_X JFrame soll KeyListener adden Java Basics - Anfänger-Themen 32
F Keylistener Java Basics - Anfänger-Themen 12
hdi KeyListener : keyTyped() nicht nutzbar? Java Basics - Anfänger-Themen 1
StickToFreak Runnable + KeyListener? Java Basics - Anfänger-Themen 32
dl85hej Keylistener Java Basics - Anfänger-Themen 16
H KeyListener will nicht reagieren Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2
G Prob. mit KeyListener und Unterklasse Java Basics - Anfänger-Themen 5
G Keylistener nur besimmte Zeichen zulassen Java Basics - Anfänger-Themen 8
A KeyListener funktioniert nicht Java Basics - Anfänger-Themen 7
D KeyListener Java Basics - Anfänger-Themen 7
B Keylistener auf JSpinner reagiert nicht? Java Basics - Anfänger-Themen 3
G KeyListener für die Taste "/" Java Basics - Anfänger-Themen 5
E brauche hilfe beim KeyListener Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben