Programm für 5 sekunden anhalten und actionevent abfangen

crasdf

Mitglied
hallo leute

ich brauch mal hilfe bei so ner idee von mir und zwar folgendes:

ich hab ein programm das durch das klicken von jbuttons insert befehle an eine db schicken.
da sind viele buttons drauf und man kann sich verklicken, deswegen moechte ich, das nach dem klick auf einen der jbuttons 5 sekunden auf die eventuelle betaetigung eines "undo" oder "cancel" buttons gewartet wird, bis der sql befehl abgesendet wird, ansonsten wird rollback gecalled.

ich tu mir sehr schwer mit google suchbegriffen bei dem thema und kann kaum was finden das das beschreibt was ich mir da vorstell

mfg
crasdf
 

Marco13

Top Contributor
Klingt vom Bedienkonzept her ... SEHR "unkonventionell" ("Warum passiert nichts, wenn ich klicke? ;( " ;) )... aber du kannst dir mal nach der Klasse "Timer" suchen - entweder den aus javax.swing oder javax.utils, je nachdem, wie genau das ablaufen soll (die eigentliche DB-Arbeit läuft ja vermutlich eh in einem eigenen Thread, ggf. mit einem SwingWorker...!?)
 

Latur

Mitglied
Ich kann Marco13 nur zustimmen!

Ich würde dir eher raten ein JOptionPane zu nutzen, um mit diesem den Nutzer auf den gewählten Befehl erneut aufmerksam zu machen und gleichzeitig ihn zur nochmaligen Bestätigung zwingen.

Benutzen kannst du es mit:
Java:
int retVal = JOptionPane.showConfirmDialog(this, "Wollen sie den Befehl XY wirklich ausführen?", "Titel hier übergeben", JOptionPane.OK_CANCEL_OPTION);
        if(retVal == JOptionPane.OK_OPTION)    {
            System.out.println("Hat auf OK gedrückt");
        } else  {
            System.err.println("Hat auf Abbrechen gedrückt");
        }
Anmerkung:
Der erste Übergabeparameter (in meinem Fall 'this'), sollte eine Referenz auf das Parent-Fenster darstellen, falls du es mit Netbeans machst ist es in den meisten fällen einfach 'this' ;)
[Man könnte auch 'null' übergeben, allerdings wäre das schlampig ;D]
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Sind sie sicher, dass sie die Datei löschen wollen?
Sind sie wirklich gaaaanz sicher dass sie die Datei wirklich löschen wollen?

-> und dennoch brauchen wir Backups :)

Man nennt das auch impulsiven Arbeitsstil - die User sollen sich besser daran gewöhnen erst zu denken...

Ja, das war ziemlich sarkastisch :)

Ich könnte mir etwas vorstellen.

Der User klickt und sieht ein Resultat. Allerdings wird im Hintergrund das ganze verzögert und so ein vereinfachtes Rollback ermöglicht.

So ähnlich wie bei den Beiträgen hier - da hat man ja nur eine gewisse Zeit zur Verfügung, diese zu ändern.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Sicher wäre eine mehrstufige Undo-Funktion schöner, aber exorbitant viel, viel aufwändiger. Das einfachste (und "konventionellste") dürfte wohl ein Bestätigungsdialog sein. Ab besten ohne Focus, damit man ihn nicht versehentlich mit "Enter" bestätigt, und am besten erscheint er jedes mal an einer zufällige Bildschirmposition, damit der User wach bleibt.
(Eigentlich müßte da ein " :joke: " hin, aber ... wie löscht man in Windows Dateien? Man drückt Entf und dann sofort Enter, weil ja erst der Dialog kommt. Und wenn beim Dialog standardmäßig "Abbrechen" ausgewählt ist, drückt man irgendwann gleich Entf-Links-Enter. Die Dialoge haben keine andere Funktion, als die Anzahl der Tasten, die man drück muss, zu erhöhen. Man denkt dadurch kein Stück mehr über das nach, was man tut...)
 
M

maki

Gast
Je mehr Bestätigungsdialoge einem User gezeigt werden, umso automatischer klickt er auf OK ohne den Text zu lesen.
Würde lieber die "vielen" Buttons neu arrangieren, so dass "fehlclicks" seltener und offensichtlicher sind.
 
V

vanny

Gast
Das ist in etwa auch das Kriterium, das mich in der Regel genauso lange aufhält, wie das Programmieren an sich.
Ich versuche immer dem Programm eine größtmögliche Eigenlogik zu verpassen, so dass der User nur logische Operationen zur Verfügung hat.(Stichwort Prozeßorientiert)
Speziell bei Programmen, die eine Schnittstelle zwischen DAU und DB darstellen ist sowas Goldstaub.

Gruß Vanny
 

bERt0r

Top Contributor
Vielleicht würds auch helfen auf der DB kein autocommit zu machen, sondern nur wenn der User (indem er auf einen Commit Button klickt :D) das will.
 

Cola_Colin

Top Contributor
Was ist das für eine db ?
Könnte man nicht die Änderungen erst mit einem Klick auf einen extra Button -fernab der anderen und mit Bestätigungsdialog- commiten, bzw mit einem anderen Button einen rollback ausführen ?

Die Möglichkeit einen Fehler leicht rückgängig machen zu können ist imho mehr Wert als ihn zu verhindern.

EDIT: langsaaaaam xD
 

crasdf

Mitglied
ok erstmal verzeihung fuer die verspaetung
nun will ich fragen beantworten
vorneweg, hier ist ein screenshot von der gui:
ImageShack® - Online Photo and Video Hosting

erstmal @Marco13
es passiert schon etwas, wenn man klickt, es soll nur 5 sekunden gewartet werden, bis etwas passiert und ja, db laeuft in einem extra thread

@Latur
erstaunlicherweise hatte ich diese idee auch schon und ich danke dir vielmals fuer den code :thumbsup:

@Michael...
schau dir den scrot an. ich weiss das das nicht brilliant designed ist. ist allerdings transparent.
wenn der user ausversehen mit der maus abgerutscht ist, wird er/sie schon merken das das jetzt der falsche button war, deswegen halte ich die bestaetigung per JOptionPane auch fuer sehr nice

@Andi CH
es ist nicht eingeplant das der user ein resultat sieht. allerdings, wie auch schon angemerkt, angesichts des aufwands einfach "herkoemmlicher" ein OptionPane zu nutzen ;)

@Marco13
hihi ich hab auch direkt ueberlegt ob ich den focus auf ja oder nein legen soll, ich habs gerne auf ja, aber fuer den durchschnittsuser...:)

@maki
das klingt super. ohne dich noetigen zu wollen meinst du du kannst da n konkreten vorschlag machen wenn du dir den scrot ansiehst? :)

@bERt0r
auch ne gute idee, das kann man mit nem joptionpane und nem return allerdings wohl genauso machen, so das das prog nicht mal an die stelle springt an der PrepStmt.execute(); steht

@Cola_Colin
ganz normaler mysql community server. z. zt. unter windows
auch hier wuerd ich sagen das das rollback durch den dialog quasi....hm obsolete ist
oder irr ich mich da?
ahhhh

/edit:
nochmal vielen dank an Latur, habs grad eingebaut, works like a charm!

mfg
und vielen dank fuer die guten ideen
crasdf
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Kenn die Hintergründe nicht aber für mich schaut das eher nach einem Anwandungsfall für JRadioButtons aus und eventuell einem OK Button um die Aktion auszulösen.
 

Illuvatar

Top Contributor
Kleiner Offtopic-Tip: Ich halte scrot für eine nicht sonderlich gelungene Abkürzung für screenshot: Ich hab mich eben einige Zeit gewundert, warum du dein Programm dauernd als Schrott bezeichnest ;) (und das auch noch 2 mal falsch schreibst :D)
 

Shulyn

Bekanntes Mitglied
Du könntest die zustände der Buttons in einem kleinen Model halten. Der Klick auf die Buttons verändert dann nur das Model und sendet nicht sofort die Inserts ab.
Wenn der Dialog geschlossen wird (z.B. über "OK" oder "Absenden" ) werden die eigentichen Inserts erst losgeschickt.
 

turtle

Top Contributor
Ich halte, wie meine Vorposter, eine JOptionPane für ganz angebracht für diesen Fall.

Ich möchte aber noch meine 2 Cents einwerfen und anregen, dass die JOptionPane sich automatisch schliessen (und die Operation ausführen) könnte, wenn der User NICHT interveniert.

Also zeigt das Programm in der JOptionPane an "Folgender Befehl <bla> wird in <x> Sekunden automatisch ausgeführt". Wenn vor Ablauf der User auf den Cancel-Button klickt, wird die Operation natürlich nicht ausgeführt.
 

crasdf

Mitglied
@Michael...
was kann das was ein bestaetigungsdialog nicht kann?

@Illuvatar
das "scrot" is nur ne angewohnheit von der linux kommandozeile :)

@turtle
danke fuer die bestaetigung und die idee :)

und @ bERt0r
was kann das besser machen was der bestaetigungsdialog nicht schon macht?
die user, die dieses tool benutzen werden wissen schon ganz genau was sie zu klicken haben, wie schon vorher gesagt ein fehlklick wuerde dem user sofort auffallen. aber kein problem er kann die bestaetigung ja verneinen!
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Mir stellen sich einfach die Haare auf, wenn ich sowas sehe und Radiobuttons vermeiden genau dein Problem. Ausserdem nervt so ein Bestätigungsdialog. Wenn ich 3 deiner Optionen aktivieren will, muss ich 6 mal klicken und es springt dauernd ein neues Dialogfeld auf. Mit Radiobuttons löse ich alles in einem Fenster und mit 4 Klicks. So viele Bestätigungsfelder sind im Allgemeinen für den Benutzer ein Horror, es sei denn er will das genau so haben, dann bin ich ruhig :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
J SWT 32 bit Programm für 64 bit Jave AWT, Swing, JavaFX & SWT 10
C Programm mit einem Fenster für Einstellungen AWT, Swing, JavaFX & SWT 3
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
G CAD Programm AWT, Swing, JavaFX & SWT 4
thor_norsk E - Mail Programm AWT, Swing, JavaFX & SWT 2
_user_q Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
J Programm findet Resource nicht. AWT, Swing, JavaFX & SWT 6
N Programm Läuft nicht auf anderen Pcs AWT, Swing, JavaFX & SWT 9
imawake Java Paket-Tracking Programm 📦 AWT, Swing, JavaFX & SWT 7
S Lustiges programm schnell coden? AWT, Swing, JavaFX & SWT 2
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
M DragAndDrop - aus Browser ins Programm AWT, Swing, JavaFX & SWT 6
T Java GUI - Würfel Programm AWT, Swing, JavaFX & SWT 6
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
I Gui in bestehendes Java-Programm AWT, Swing, JavaFX & SWT 11
L JavaFX IntelliJ Standalone Programm exportieren AWT, Swing, JavaFX & SWT 9
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
M AWT Programm in den Tray minimieren AWT, Swing, JavaFX & SWT 2
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
A Java Programm gestalten AWT, Swing, JavaFX & SWT 4
P Swing Warum startet das Programm nicht? AWT, Swing, JavaFX & SWT 3
J JavaFX Kamera im Programm öffnen AWT, Swing, JavaFX & SWT 6
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower progressBar in ein bestehendes Programm einbauen AWT, Swing, JavaFX & SWT 3
J Verbesserungsvorschläge?! Kleines AWT Programm AWT, Swing, JavaFX & SWT 4
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
G Zeichnen Programm AWT, Swing, JavaFX & SWT 1
R Swing Programm läuft nur beim Debuggen korrekt ab AWT, Swing, JavaFX & SWT 4
Arif Swing Programm friert ein... AWT, Swing, JavaFX & SWT 2
apple_pie1998 Programm gibt plötzlich exceptions aus. AWT, Swing, JavaFX & SWT 4
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
T Swing Programm hängt sich auf! AWT, Swing, JavaFX & SWT 23
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
S Action durchführen beim Programm beenden AWT, Swing, JavaFX & SWT 3
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
G Programm GUI erstellen AWT, Swing, JavaFX & SWT 5
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
T Programm im METRO Design? AWT, Swing, JavaFX & SWT 1
J Programm hängt sich bei Log In auf AWT, Swing, JavaFX & SWT 1
C Programm mit Passwort schließen AWT, Swing, JavaFX & SWT 5
D Robot Programm mit Escape abbrechen (aus Eclipse heraus) AWT, Swing, JavaFX & SWT 2
N Programm läuft perfekt in Eclipse aber nicht in .JAR AWT, Swing, JavaFX & SWT 3
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
J Programm im GUI ausführen AWT, Swing, JavaFX & SWT 4
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
S Event Handling konsole Programm mit Tastendruck beenden AWT, Swing, JavaFX & SWT 5
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
W Windows Fenster in einem Programm AWT, Swing, JavaFX & SWT 2
F Mal Programm AWT, Swing, JavaFX & SWT 13
C In Hauptfenster Programm-Klassen implementieren AWT, Swing, JavaFX & SWT 9
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
C Swing Wie kann ich im Programm das Menü schließen AWT, Swing, JavaFX & SWT 2
J SWING - Programm ohne Eclipse etc. starten AWT, Swing, JavaFX & SWT 7
J Button soll nach Klick Text ändern und Programm in 3 Sekunden beenden AWT, Swing, JavaFX & SWT 6
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
M Programm in Jframe "einbinden" AWT, Swing, JavaFX & SWT 7
S Programm auf aktuellen Stand bringen AWT, Swing, JavaFX & SWT 2
Spin Tool: Popup -Programm AWT, Swing, JavaFX & SWT 3
GUI-Programmer Swing JWindow - Programm wird ohne Grund beendet AWT, Swing, JavaFX & SWT 3
E Kreis-Mal-Programm AWT, Swing, JavaFX & SWT 7
P Programm aktuallisiert sich nur beim Rüberzeigen AWT, Swing, JavaFX & SWT 6
T Java-Anwendung arbeitet Programm in seltsamer Reihenfolge ab AWT, Swing, JavaFX & SWT 3
J Programm schließen AWT, Swing, JavaFX & SWT 4
J Programm nur einmal öffnen AWT, Swing, JavaFX & SWT 3
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
T Programm vom Desktop starten! AWT, Swing, JavaFX & SWT 2
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
M Browser in Programm einbinden AWT, Swing, JavaFX & SWT 4
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
H Userinput in GUI an externes Programm AWT, Swing, JavaFX & SWT 8
D Firefox aus Programm starten AWT, Swing, JavaFX & SWT 4
S LayoutManager Einfaches Programm mit VE und Eclipse3.6 realisieren AWT, Swing, JavaFX & SWT 2
R GUI hängt während Programm läuft AWT, Swing, JavaFX & SWT 7
S AWT Fenster schließen und Programm beenden AWT, Swing, JavaFX & SWT 10
H Infofenster vor dem eigentlichen Java Programm AWT, Swing, JavaFX & SWT 3
B Uberschrift in Swing-Programm zur Laufzeit aendern... AWT, Swing, JavaFX & SWT 4
C Swing Kleines Programm mit SWING unter Verwendung von MVC AWT, Swing, JavaFX & SWT 5
capgeti Wie Programm in JPanel (o.ä.) starten? AWT, Swing, JavaFX & SWT 3
B Externes Programm mit Robot Steuern AWT, Swing, JavaFX & SWT 3
G Programm läuft nur auf manchen Rechnern AWT, Swing, JavaFX & SWT 10
M SWT Programm pausiert ungewollt AWT, Swing, JavaFX & SWT 5
K Website in Java Programm einbinden AWT, Swing, JavaFX & SWT 3
B komplettes programm in einem fenster AWT, Swing, JavaFX & SWT 5
L Frage bei Programm mit Zufallskreisen AWT, Swing, JavaFX & SWT 9
L Programm terminated (zu frueh) AWT, Swing, JavaFX & SWT 3
T SplashScreen im laufenden Programm AWT, Swing, JavaFX & SWT 2
M Panelinhalt im Programm verändern AWT, Swing, JavaFX & SWT 12
R Programm nicht mehr in der Taskleiste AWT, Swing, JavaFX & SWT 2
3TageBart Ebenen in Zeichen-Programm implementieren AWT, Swing, JavaFX & SWT 9
H Swing HUD in externes Programm einblenden AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben