【发布时间】:2021-02-05 18:11:33
【问题描述】:
据我所知,JSplitPane 的setDivider() 方法可以采用从左侧算起的绝对位置的 int。例如,someSplitPane.setDivider(120); 会将分隔线设置为距左侧 120 像素。有什么办法可以做同样的事情,但将分隔线设置为从右侧开始的绝对位置?
简单实现:
public class Window extends JFrame {
JSplitPane splitpane;
public Window() {
initComponents();
}
private void initComponents() {
setTitle("Debugging");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new Dimension(640, 480));
splitpane = new JSplitPane();
System.out.println(splitpane.getSize().width); // prints 0
splitpane.setDividerLocation(splitpane.getSize().width - 120);
getContentPane().add(splitpane);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new Window().setVisible(true);
});
}
}
编辑:我已经编写了与任何现有代码隔离的代码,并且我重现了该错误。看起来正在发生的事情是 JFrame 正在实例化并出现在桌面上,然后大约一秒钟后,一个 0(来自注释的打印语句)输出到控制台。
【问题讨论】:
标签: java swing user-interface jsplitpane