3
我想創建一個窗口,其中有3個jPanel,由splitPane-s分隔。左側和右側應該由用戶調整大小,中間的一個應該填充剩餘的空間。用3個面板創建JSplitPane
我已經創建了它,但是如果我移動第一個splitPane,那麼第二個也在移動。我不確定,如果我用我想要的最好的方法。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
public class MyWindow extends JFrame {
public MyWindow() {
this.setLayout(new BorderLayout());
JPanel leftPanel = new JPanel();
JPanel centerPanel = new JPanel();
JPanel centerPanel2 = new JPanel();
JPanel rightPanel = new JPanel();
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, centerPanel);
JSplitPane sp2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, centerPanel2, rightPanel);
centerPanel.setLayout(new BorderLayout());
this.add(sp, BorderLayout.CENTER);
centerPanel.add(sp2, BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 500);
this.setVisible(true);
}
}
的排序。左側窗格只能調整到第二個分隔符的位置。另一方面,右窗格可以一直收縮到最左面板的最左邊界。這是一個半解決方案,但並不是真正做到這一點的正確方法。 – searchengine27 2017-12-06 20:23:20
差不多就是這樣。您只需將'sp'的最小大小設置爲分隔符位置+ 2 *分隔符大小+ 1,即可完成這項工作。我沒有深入研究爲什麼會出現這種情況,但它修復了@ searchengine27評論中的錯誤。 所以你可以爲它寫一個新組件,或者簡單地爲'sp'創建一個匿名類。 請注意,這隻能防止分隔線收縮左側面板。另一個解決方案是調整正確的組件。我不明白這是如何可能的。 – 2018-03-05 00:25:04