Sto tentando di impostare la posizione del divisore di un JSplitPane ma sembra non funzionare.L'impostazione della posizione del divisore su un JSplitPane non funziona
Ecco uno SSCCE:
import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
public class JSplitProblem extends JFrame {
public JSplitProblem(){
JPanel upperPanel = new JPanel();
upperPanel.setLayout(new BoxLayout(upperPanel, BoxLayout.X_AXIS));
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
JPanel red = new JPanel();
red.setBackground(Color.red);
leftPanel.add(red);
JPanel rightPanel = new JPanel();
rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
JPanel blue = new JPanel();
blue.setBackground(Color.blue);
rightPanel.add(blue);
upperPanel.add(leftPanel);
upperPanel.add(rightPanel);
JPanel bottomPanel = new JPanel();
bottomPanel.setBackground(Color.black);
JSplitPane mainSplittedPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upperPanel,bottomPanel);
mainSplittedPane.setOneTouchExpandable(true);
mainSplittedPane.setDividerLocation(0.5);
this.add(mainSplittedPane);
this.setSize(800,600);
this.setResizable(true);
this.setVisible(true);
}
public static void main(String[] args) {
new JSplitProblem();
}
}
Vorrei pannello di fondo nero per giaceva su un 50% di tutta l'area per impostazione predefinita. Che cosa sto facendo di sbagliato?
semplice più uno per sscce – mKorbel
IIRC setDividerLocation con un rapporto operativo solo quando lo SplitPane è stata resa visibile in una gerarchia di contenimento. Ciò è probabilmente dovuto al fatto che il metodo calcola immediatamente la posizione effettiva in pixel, in base alla dimensione corrente. – jfpoilpret
@jfpoilpret: sì. L'ho capito dalla risposta di mKorbel. Altrimenti usare invoke in seguito non lo effettuerà. Grazie per aver segnalato comunque. – Heisenbug