Java JSplitPane与BorderLayout中的JButtons重叠,但在布局为null时不重叠
所以我有另一个问题 我目前正在GUI中使用BorderLayout,这样当我调整jframe的大小时,所有内部组件都会随之调整大小。在提供这种调整大小功能的同时,我无法让任何其他布局与我想要的GUI外观配合使用。在顶部我有一个JMenuBar,在它下面我有一堆按钮。下面我应该有一个JSplitPane,它就在那里。然而,这些按钮似乎包含在JSplitPane中,这不是我的意图。因此,当splitpane中发生任何事情时,按钮将消失,直到我再次将鼠标移到按钮上 当我将布局设置为null时,一切都很好,只是我失去了调整大小的功能,这不好 尝试发布图片,但由于我的代表还未满10岁,因此无法发布:( 有什么建议吗? 我曾尝试将按钮放入JPanel,然后添加JPanel,但拆分窗格与之重叠。JToolBar也是如此 我添加项目的顺序是: 1) 菜单栏Java JSplitPane与BorderLayout中的JButtons重叠,但在布局为null时不重叠,java,swing,jframe,jsplitpane,border-layout,Java,Swing,Jframe,Jsplitpane,Border Layout,所以我有另一个问题 我目前正在GUI中使用BorderLayout,这样当我调整jframe的大小时,所有内部组件都会随之调整大小。在提供这种调整大小功能的同时,我无法让任何其他布局与我想要的GUI外观配合使用。在顶部我有一个JMenuBar,在它下面我有一堆按钮。下面我应该有一个JSplitPane,它就在那里。然而,这些按钮似乎包含在JSplitPane中,这不是我的意图。因此,当splitpane中发生任何事情时,按钮将消失,直到我再次将鼠标移到按钮上 当我将布局设置为null时,一切都很
setJMenuBar(menuBar)
2) 按钮
getContentPane().add(btnZoomIn)
等等
3) 拆分窗格
getContentPane().add(splitPane)
然后你在那之后看到的其他事情对我来说似乎很好
public class BadLayout06 {
public static void main(String[] args) {
new BadLayout06();
}
public BadLayout06() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JMenuBar mb = new JMenuBar();
mb.add(new JMenu("File"));
JToolBar tb = new JToolBar();
tb.add(new JButton("Zoom In"));
tb.add(new JButton("Zoom Out"));
tb.add(new JButton("Invert Image"));
tb.add(new JButton("Toggle Highlights"));
tb.add(new JButton("Save"));
tb.add(new JButton("Cancel"));
tb.setFloatable(false);
JSplitPane spSub = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
JTabbedPane tpLeft = new JTabbedPane();
tpLeft.add("Table Entry", new JPanel());
tpLeft.add("Form Entry", new JPanel());
spSub.setLeftComponent(tpLeft);
JTabbedPane tpRight = new JTabbedPane();
tpRight.add("Field Help", new JPanel());
tpRight.add("Image Navigation", new JPanel());
spSub.setRightComponent(tpRight);
JSplitPane spMain = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
spMain.setLeftComponent(new JPanel());
spMain.setRightComponent(spSub);
JFrame frame = new JFrame("Testing");
frame.setJMenuBar(mb);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(tb, BorderLayout.NORTH);
frame.add(spMain, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
有一些代码来演示这个问题吗?还是屏幕截图?从外观上看,您应该将按钮添加到
getContentPane().add(btnZoomIn,BorderLayout.NORTH)
中,因为边框布局只允许一个组件位于UI的中心位置,这是空布局,这也是边框布局,作为对borderlayout.north的回应:我切换了它,将我的6个按钮中的每一个添加到jtoolbar,然后在north点添加,这就成功了。我的按钮现在看起来很奇怪,因为它们在工具栏上,但是哦,好吧。谢谢你的建议!它帮助了很多人,在北方位置添加jtoolbar对我很有用。谢谢