我的JComponents占用太多像素

时间:2011-09-20 20:14:21

标签: java swing layout padding pixel

我正在尝试修剪现有Java Swing UI上的不必要像素。它主要使用GridbagConstrains,但也使用其他一些LayoutManagers。很多组件只是添加到容器中,默认情况下它们会在每侧填充10个额外的像素。例如,使用GridBagConstrains,我有一个复选框,默认情况下每边填充的像素太多。我将ipadxy和insets设置为0,但它没有任何效果。任何人都可以提供一些一般性提示吗?

4 个答案:

答案 0 :(得分:2)

您的JCheckBox可能有一个默认边框,可以将组件填满一些。尝试在复选框上设置零宽度空边框,我认为这会有所帮助:

checkBox.setBorder(BorderFactory.createEmptyBorder());

修改

对于JPanel,请确保其布局管理器未添加填充。一个常见的情况是new JPanel()。默认情况下,JPanel的布局是BorderLayout,具有一些水平和垂直间隙。相反,使用仍然使用边框布局的new JPanel(new BorderLayout()),但水平和垂直间隙将为零

此外,JPanels和JToolBars都是容器,请记住,默认情况下他们的孩子也可能有非空边框(例如,添加到JToolBar的JButton)

答案 1 :(得分:1)

使用GridBagConstraints将组件的weightxweighty设置为0。

然后添加一个不可见的组件,例如对new JLabel()weightx为1的小组weighty {/ 1}}

答案 2 :(得分:1)

一些L& Fs(例如 Nimbus Aqua )支持JComponent.sizeVariant,如Resizing a ComponentUsing Client Properties中所述。

与此同时,要警惕过度拥挤。还要考虑其他设计,包括选项卡式窗格,卡片布局,工具栏,调色板和无模式对话框。另请参阅此Q&A

答案 3 :(得分:0)

您是否也设置了Insets