Auf Einblenden von Scrollbars reagieren

Status
Nicht offen für weitere Antworten.

Tobias

Top Contributor
Hi,

ich möchte darauf reagieeren können, wenn eine JScrollPane beschließt, dass es an der Zeit ist, ScrollBars einzublenden. Hat jemand eine zündende Idee?

mpG
Tobias
 

André Uhres

Top Contributor
Code:
...
        ComponentListener componentListener = new ComponentListener() {
            public void componentHidden(ComponentEvent e) {
                checkScrollbar(e.getComponent(), false);
            }
            public void componentMoved(ComponentEvent e) {
            }
            public void componentResized(ComponentEvent e) {
            }
            public void componentShown(ComponentEvent e) {
                checkScrollbar(e.getComponent(), true);
            }
        };
        jScrollPane1.getVerticalScrollBar().addComponentListener(componentListener);
        jScrollPane1.getHorizontalScrollBar().addComponentListener(componentListener);
...
    private void checkScrollbar(Component component, boolean shown){
        if(component instanceof JScrollBar){
            JScrollBar scrollbar = (JScrollBar)component;
            if(scrollbar.getOrientation() == JScrollBar.VERTICAL){
                if(shown)
                    System.out.println("Vertical scrollbar shown");
                else
                    System.out.println("Vertical scrollbar hidden");
            }else{
                if(shown)
                    System.out.println("Horizontal scrollbar shown");
                else
                    System.out.println("Horizontal scrollbar hidden");
            }
        }
    }
...
 

Tobias

Top Contributor
Tja, Pustekuchen...

Also, obige Lösung ist zwar richtig und sah auch toll aus, aber sie passt nicht auf mein Vorhaben:

Ich schreibe ein Programm, das besonders auch auf Touchscreens optimiert wird. Deshalb brauche ich größere Knöpfe zum Hoch- und Runterscrollen. Siehe Screenshot:

scroll.gif


Die Scroll-Buttons sollen dynamisch eingeblendet werden, wenn sie notwendig sind - deshalb will ich darauf reagieren, wenn die JScrollPane beschließt, dass Scrollbars notwendig sind. Da die Scrollbars an sich aber nicht angezeigt werden sollen, hat die Scrollbar die Vertical-/HorizontalScrollbarPolicy NEVER - was unter anderem dazu führt, das der ComponentListener niemals über das Einblenden der Scrollbars informiert wird - es findet schließlich nicht statt.

Was tun?

mpG
Tobias
 

thE_29

Top Contributor
Nimm ne JList, überschreibe dir den ListCellRenderer und gib JButtons zurück und sag dann ensureIndexIsVisible(getSelectedIndex()) bei jedem Button druck!

Und dann hast du das von dir gewünschte Ergebnis ;)
 

Tobias

Top Contributor
Mh, interessante Idee, aber eher nicht das richtige für mich. Die Navigation (also der Inhalt der ScrollPane) steht ja bereits und soll auch nicht mehr verändert werden.

mpG
Tobias
 

thE_29

Top Contributor
@Tobias: ne Kollegin von mir hat das auch mit nem Touchscreen und auch sowas was du willst!

Und die hat das so gemacht, da es der elleganteste Weg ist ;) (und auch nicht wirklich schwierig - von daher net wirklich viel mit Umbauarbeiten zum tun)
 

Tobias

Top Contributor
Gut, 29, aber ich sehe da noch das Problem, das ich später auch andere scrollbare Komponenten haben werde, z. B. Textareas. Da stehe ich dann wieder vor dem selben Problem. Verfolge gerade einen Ansatz über JViewPort.getExtentSize() und JViewPort.getViewSize() - mal sehen, ob ich darüber zum Ergebnis komme...

mpG
Tobias
 

Tobias

Top Contributor
Mein Ansatz scheint grundsätzlich richtig zu sein - habe jetzt noch etwas merkwürdige Effekte beim Aus- und Einblenden der Buttons, aber das kriegt man sicher in den Griff.

Grundsätzlich FUNKTIONIERT ES jedenfalls! *freu* *imKreisSpringt* ;)

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Dateiname im Label einblenden AWT, Swing, JavaFX & SWT 4
L Swing Benachrichtigung einblenden AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
R Label in den Vordergrund einblenden AWT, Swing, JavaFX & SWT 5
H Swing Symbol in Taskleiste dynamisch aus- bzw. einblenden AWT, Swing, JavaFX & SWT 14
H Swing HUD in externes Programm einblenden AWT, Swing, JavaFX & SWT 7
P verschiedene JPanels einblenden je nach auswahl AWT, Swing, JavaFX & SWT 2
L JWindows einblenden/animieren AWT, Swing, JavaFX & SWT 19
M JPanel einblenden AWT, Swing, JavaFX & SWT 5
G Text zur Laufzeit einblenden? AWT, Swing, JavaFX & SWT 2
J BusyAnzeige einblenden wenn Thread länger als 2sec blokiert? AWT, Swing, JavaFX & SWT 5
S Frame "einblenden" AWT, Swing, JavaFX & SWT 5
J Spalte in JTable aus- und wieder einblenden AWT, Swing, JavaFX & SWT 10
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
F 2D-Grafik Skalieren der Scrollbars beim Zoomen einer JScrollPane AWT, Swing, JavaFX & SWT 4
S Swing JScrollPane verliert Scrollbars AWT, Swing, JavaFX & SWT 5
H Swing JScrollPane bekommt keine ScrollBars AWT, Swing, JavaFX & SWT 5
R Scrollbars an jFrame AWT, Swing, JavaFX & SWT 3
V AWT Scrollbars in dynamischem JPanel? AWT, Swing, JavaFX & SWT 4
D Swing Problem mit Scrollbars in einem JPanel eines JWindows AWT, Swing, JavaFX & SWT 4
B JScrollbarPane zeigt keine scrollbars AWT, Swing, JavaFX & SWT 2
G RCP - SWT :: Scrollbars in einer View AWT, Swing, JavaFX & SWT 10
J JScrollPane aber Scrollbars nicht sichtbar! *grrrrr* AWT, Swing, JavaFX & SWT 10
K JTextArea und ScrollBars AWT, Swing, JavaFX & SWT 2
T Warum keine ScrollBars in diesem ScrollPane? AWT, Swing, JavaFX & SWT 3
M JTable zeigt keine Scrollbars bei JScrollpaneeinbettung AWT, Swing, JavaFX & SWT 2
S Scrollbars hinzufügen AWT, Swing, JavaFX & SWT 7
D Scrollbars funktionieren nicht in Tabelle AWT, Swing, JavaFX & SWT 4
H Swing Auf Klick auf Menü-Eintrag reagieren AWT, Swing, JavaFX & SWT 0
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
J CheckBoxListCell auf click event in listView reagieren AWT, Swing, JavaFX & SWT 1
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
L JSplitPane - auf Änderung reagieren AWT, Swing, JavaFX & SWT 4
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
C Im Spiel wie auf Pfeiltasten reagieren? AWT, Swing, JavaFX & SWT 3
S Swing Auf Änderungen eines Models in der View einer JTable reagieren AWT, Swing, JavaFX & SWT 1
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
2 Anfänger problem: Buttenklick soll reagieren AWT, Swing, JavaFX & SWT 9
H Swing Auf Änderung bei JRadioButton reagieren. AWT, Swing, JavaFX & SWT 3
S JTable - Auf spezielle Eingabe nicht reagieren. AWT, Swing, JavaFX & SWT 5
S Auf Tastendruck reagieren AWT, Swing, JavaFX & SWT 2
F Swing Auf JComboBox-Event erst NACH Auswahl reagieren AWT, Swing, JavaFX & SWT 8
N Swing Auf Wertänderung reagieren. AWT, Swing, JavaFX & SWT 5
M Swing Auf Veränderung des Clipboards reagieren AWT, Swing, JavaFX & SWT 7
L SWT Tree reagieren BEVOR selektiert wurde AWT, Swing, JavaFX & SWT 2
C Auf Größenänderung eines Fensters (JFrame) reagieren AWT, Swing, JavaFX & SWT 2
M In Jlist auf Änderungen von mehreren JLabels reagieren AWT, Swing, JavaFX & SWT 3
N Swing JComboBox: Auf Model- und Selectionänderungen reagieren AWT, Swing, JavaFX & SWT 2
S Swing Auf Enter - Eingabe reagieren AWT, Swing, JavaFX & SWT 10
R Events - Nur auf eines reagieren AWT, Swing, JavaFX & SWT 3
T JComboBox: ActionListener/ItemListener wie nur auf bestimmte Events reagieren? AWT, Swing, JavaFX & SWT 7
R JList: auf den selektierten Eintrag reagieren AWT, Swing, JavaFX & SWT 4
A JOptionPane soll auf Enter reagieren AWT, Swing, JavaFX & SWT 4
G Button auf Enter reagieren AWT, Swing, JavaFX & SWT 5
G JTable auf Doppelklick reagieren AWT, Swing, JavaFX & SWT 4
G Auf Buttons reagieren AWT, Swing, JavaFX & SWT 10
A ComboBox soll reagieren ohne fokus AWT, Swing, JavaFX & SWT 7
V Nulllayout und wie auf Resizen reagieren? AWT, Swing, JavaFX & SWT 4
B Auf Fenster Pos.Änderung reagieren und 2. Fenster andocken AWT, Swing, JavaFX & SWT 10
D JButton mit Fokus soll auf ENTER reagieren AWT, Swing, JavaFX & SWT 3
G JTree soll nur auf Mausklick reagieren AWT, Swing, JavaFX & SWT 10
P Änderung der Fenstergrösse abragen und reagieren. AWT, Swing, JavaFX & SWT 3
G Auf Ereignis in JComboBox reagieren AWT, Swing, JavaFX & SWT 3
W JPanel, JLabel und MouseListener -> auf clicks reagieren AWT, Swing, JavaFX & SWT 5
I JComboBox soll auf Tastendruck reagieren AWT, Swing, JavaFX & SWT 4
F JOptionPane soll nicht auf ENTER reagieren AWT, Swing, JavaFX & SWT 8
G Auf Fenstergrößen-Änderung reagieren AWT, Swing, JavaFX & SWT 10
G JTable: Auf Tasten reagieren möglich? AWT, Swing, JavaFX & SWT 2
T JOptionPane nicht auf Tastendruck reagieren AWT, Swing, JavaFX & SWT 2
A JButton und JCheckBox im JTree reagieren nicht AWT, Swing, JavaFX & SWT 13
W Auf Eingabe von Return reagieren AWT, Swing, JavaFX & SWT 4
M Panels reagieren nicht auf Dialoge AWT, Swing, JavaFX & SWT 3
F JComboBox setEditable( true ) auf Tastatur Events reagieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben