Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    4

    JSplitPane - impostare il Divider

    Ciao a tutti, vi espongo il mio problema.
    Per necessità devo utilizzare un JSplitPane; nella parte superiore ho una textArea e nella parte inferiore anche.
    ciò che vorrei fare è impostare il Divider in modo che disti ad esempio 150 Px dalla textArea inferiore, a meno che non venga spostato manualmente dopo aver ridimensionato il frame.
    Il metodo utile all'occorrenza è setDividerLocation(150); perfetto se non fosse per il fatto che viene applicato a partire dalla parte superiore e non è possibile applicarlo partendo dalla parte inferiore.
    Mi chiedo perchè non si stato implementato per gestire anche questa possibilità, ad esempio accettando un numero negativo.

    Vi è capitato di trovarvi in questa situazione? se si, come avete aggirato l'ostacolo?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Semplicemente perchè la distanza te la puoi calcolare con una semplice differenza fra la dimensione dell'intero contenitore del JSplitPane e la dimensione a cui vuoi arrivare.

    Se ho un contenitore alto 500 e voglio posizionare il divider a 150 dal blocco inferiore, posizionerò il divider a (500 - 150).

    Le dimensioni del contenitore te le puoi ricavare con un getSize().

    (spero di aver capito la problematica, almeno)


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    4
    Ciao, si hai centrato in pieno cosa intendevo dire.
    Il punto è che in questo modo devo anche creare un listener che ogni volta che viene ridimensionato il frame si occupi di riposizionare il Divider, mentre se si impostava direttamente tramite setDividerLocation la distanza veniva mantenuta anche dopo un ridimensionamento del frame.
    Questo trucchetto lo tengo come ultima spiaggia nel caso in cui non riesca a trovare un'altra soluzione.

    grazie comunque

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Il problema è che il sistema operativo funziona così. Se tu modifichi la dimensione di una finestra, la divider rimane fissa dov'è (indipendentemente dal fatto che tu l'abbia posizionata calcolando la posizione dall'alto, dal basso, da destra o da sinistra). Se vuoi modificare il comportamento di default, dovrai scrivere un listener... ma questo vale in generale, non c'entra nulla con il JSplitPane...

    E' lo stesso lavoro dei LayoutManager: se voglio mantenere le proporzioni nelle dimensioni e nelle posizioni dei componenti il lavoro lo fa per me il LayoutManager... se decido di toglierlo di mezzo (impostando a null e gestendo posizione e dimensioni con setBounds() ), il lavoro diventa a mio carico e dovrò scrivere un listener che faccia il lavoro del LayoutManager.

    Non c'è nessuna regola che dica al JSplitPane di "spostare" il divider quando io ridimensiono la finestra... se voglio questa "feature", la devo codificare all'interno di un Listener.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.