2010-04-18 7 views
5

Ich habe eine JCheckBox, die vom Benutzer nicht überprüft werden sollte, wenn ein bestimmtes anderes Feld leer ist.Die beste Methode zum Implementieren der Ablehnung einer Wertänderung durch den Benutzer in Swing?

So jetzt möchte ich ein Fehler-Popup haben und dann das Kontrollkästchen zurücksetzen (ich habe in Betracht gezogen, das Kontrollkästchen zu deaktivieren, aber die Verbindung zu dem anderen Feld ist nicht offensichtlich, und ein Tooltip-Text IMO nicht sichtbar genug).

Was ist der richtige Weg, das in Swing zu tun? Durch eine PropertyVetoException? Wohin werfe ich es und wo fange ich es? Meine erste (wahrscheinlich hässliche) Idee wäre, eine ChangeListener hinzuzufügen, die selbst das Popup anzeigt und den Wert zurücksetzt.

Bearbeiten: Die Frage ist über Nikki (Screenshot unten), eine App, die ich entwickle, die geotags Bilder und exportiert sie in Google Earth KMZ-Format. Das Kontrollkästchen wird verwendet, um die Bilder auszuwählen, die beim Export berücksichtigt werden sollen. Dies erfordert jedoch, dass die Bilder zuerst markiert werden (was wiederum entweder einen Zeitstempel oder eine manuelle Zuweisung erfordert). Ich denke nicht, dass diese Anforderung durch das UI-Layout offensichtlich gemacht werden kann.

alt text http://www.brazzy.de/nikki/screenshot_nikki.png

+2

Das klingt wie ein schlechtes UI-Design, wenn die Verbindung zwischen den beiden Formularelementen nicht offensichtlich ist. Wenn die Verfügbarkeit direkt von der anderen abhängt, warum sind sie nicht nebeneinander? –

+0

@Conspicuous Compiler: siehe bearbeiten; Ich denke nicht, dass das wirklich möglich ist; selbst wenn sie nebeneinander waren, ist die Anforderung nicht offensichtlich –

Antwort

2

Ich würde einfach das Kontrollkästchen deaktivieren, und fügen Sie eine Mitteilung zu erklären, warum die Option nicht zur Verfügung steht. Eine nette Möglichkeit, die Nachricht anzuzeigen, besteht darin, neben dem Kontrollkästchen ein kleines Ausrufezeichen anzuzeigen und die Nachricht in einen Tooltip einzufügen.

Popup eine Ausnahme oft fühlt sich falsch an, weil users don't read error messages. Für die meisten Benutzer bedeutet ein Popup mit Fehlermeldung, dass die Anwendung etwas falsch gemacht hat, in Ihrem Fall ist es das normale Verhalten.

Bearbeiten Wenn Sie darauf bestehen, das Kontrollkästchen aktiviert zu lassen, können Sie den fehlenden Daten eine andere Möglichkeit zeigen, dem Benutzer zu zeigen, dass einige Informationen fehlen. Z.B. Wenn Breite und Länge fehlen und der Benutzer auf den Export klickt, setzen Sie diese Felder für einen Moment rot. Dies zeigt dem Benutzer deutlich, was fehlt.

In diesem Bildschirm wollen Sie nicht die Maus über den roten Kreis legen, um zu verstehen, was vor sich geht?

validation http://www.vogella.de/articles/EclipseDataBinding/images/validation10.gif

+0

Benutzer lesen keine expliziten Fehlermeldungen, aber sie lesen Tooltips, die an Mini-Ausrufezeichen mit völlig nicht offensichtlichen Bedeutung angebracht sind? Sorry, ich kaufe das nicht ... –

0

Das Feld sollte einfach das Kontrollkästchen deaktivieren erlaubt werden. Wenn die Kopplung nicht intuitiv ist, muss möglicherweise das GUI-Layout überdacht werden.


EDIT: Ich lief es von Ihrer Seite, und ich glaube, hier das Problem ist, dass Sie tatsächlich einen dritten und vierten Schritt zusätzlich haben Ordner, wählen Sie die Bilder auszuwählen. Der dritte Schritt ist das validierte Bild und der vierte Schritt ist das Auswählen von Bildern für den Export. Ich denke, Ihr Problem ist, dass dies im aktuellen Layout nicht klar vermittelt wird, und das spiegelt sich in Ihrer Frage wider.

Ich würde vorschlagen, dass Sie eine separate Spalte erstellen, die das Kontrollkästchen für jedes Bild enthält, und dass das Kontrollkästchen deaktiviert ist, bis das Bild die Validierung besteht (Schritt 3). Vielleicht mit einem erklärenden Text in der Spalte darüber, warum das Bild noch nicht vorbei ist.

+0

Ich glaube nicht, dass dies durch Layout behoben werden kann; Siehe Frage bearbeiten. –

1

Ich glaube nicht, dass der Export JCheckBox überhaupt deaktiviert werden sollte. Stattdessen sollte der Export JButton selbst die aktuelle Exportliste untersuchen und anormale Einträge so anzeigen, dass die Navigation zu einem ausgewählten Foto möglich ist. Wenn alle Einträge korrekt sind, wird der Export wie gewohnt fortgesetzt.

Nachtrag: Sie denken, Sie haben Recht, die Schnittstelle so unmodal wie möglich zu halten. Mein Modell hierfür wären ungesicherte Dateien beim Beenden eines Editors oder nicht festgeschriebene Änderungen beim Schließen eines Projekts in einer IDE.

Wenn dies eine Statuszeile am unteren Rand des Fensters ist, können Sie die Anzahl der derzeit für den Export ausgewählten Fotos angeben und eine Zählung hinzufügen, falls noch Geocodierung erforderlich ist.

+0

Sicherlich eine denkwürdige Alternative. Aber ich hätte ein bisschen Angst davor, den Benutzer zu frustrieren, indem ich ihn dazu bringen würde, wieder etwas zu "reparieren", wenn er dachte, er würde Ergebnisse sehen. –

+0

Es ist ein interessantes Problem. Ihre Seite ist sehr nett, BTW. – trashgod

Verwandte Themen