我正在尝试修剪现有Java Swing UI上的不必要像素。它主要使用GridbagConstrains,但也使用其他一些LayoutManagers。很多组件只是添加到容器中,默认情况下它们会在每侧填充10个额外的像素。例如,使用GridBagConstrains,我有一个复选框,默认情况下每边填充的像素太多。我将ipadxy和insets设置为0,但它没有任何效果。任何人都可以提供一些一般性提示吗?
答案 0 :(得分:2)
您的JCheckBox
可能有一个默认边框,可以将组件填满一些。尝试在复选框上设置零宽度空边框,我认为这会有所帮助:
checkBox.setBorder(BorderFactory.createEmptyBorder());
修改强>
对于JPanel,请确保其布局管理器未添加填充。一个常见的情况是new JPanel()
。默认情况下,JPanel的布局是BorderLayout,具有一些水平和垂直间隙。相反,使用仍然使用边框布局的new JPanel(new BorderLayout())
,但水平和垂直间隙将为零
此外,JPanels和JToolBars都是容器,请记住,默认情况下他们的孩子也可能有非空边框(例如,添加到JToolBar的JButton)
答案 1 :(得分:1)
使用GridBagConstraints将组件的weightx
和weighty
设置为0。
然后添加一个不可见的组件,例如对new JLabel()
和weightx
为1的小组weighty
{/ 1}}
答案 2 :(得分:1)
一些L& Fs(例如 Nimbus , Aqua )支持JComponent.sizeVariant
,如Resizing a Component和Using Client Properties中所述。
与此同时,要警惕过度拥挤。还要考虑其他设计,包括选项卡式窗格,卡片布局,工具栏,调色板和无模式对话框。另请参阅此Q&A。
答案 3 :(得分:0)
您是否也设置了Insets
?