运行jar文件时JList控件大小更改

时间:2014-09-26 15:58:44

标签: java swing layout jlist gridbaglayout

我有两个JList控件并排。它们之间的按钮很少。当我从eclipse运行时,布局看起来很好。

enter image description here

但是如果我运行导出的jar文件,左边会占用更多空间。我不知道为什么会这样做。

enter image description here

我把它们放在像这样的GridBagLayout中。

mLstMdlTestSuitesAvailable = new DefaultListModel<String>();
mLstTestSuitesAvailable = new JList<String>();
mLstTestSuitesAvailable.setModel(mLstMdlTestSuitesAvailable);
mLstTestSuitesAvailable.setMinimumSize(new Dimension(100, 100));
JScrollPane scrollPaneTestSuitesAvailable = new JScrollPane(mLstTestSuitesAvailable);
GridBagConstraints gbcLstTestSuitesAvailable = new GridBagConstraints();
gbcLstTestSuitesAvailable.fill = GridBagConstraints.BOTH;
gbcLstTestSuitesAvailable.weightx = 10;
gbcLstTestSuitesAvailable.gridwidth = 10;
gbcLstTestSuitesAvailable.weighty = 8;
gbcLstTestSuitesAvailable.gridheight = 8;
gbcLstTestSuitesAvailable.insets = new Insets(0, 11, 10, 11);
gbcLstTestSuitesAvailable.gridx = 0;
gbcLstTestSuitesAvailable.gridy = 1;
panel.add(scrollPaneTestSuitesAvailable, gbcLstTestSuitesAvailable);

mLstMdlTestSuitesSelected = new DefaultListModel<String>();
mLstTestSuitesSelected = new JList<String>();
mLstTestSuitesSelected.setModel(mLstMdlTestSuitesSelected);
GridBagConstraints gbcLstTestSuitesSelected = new GridBagConstraints();
gbcLstTestSuitesSelected.fill = GridBagConstraints.BOTH;
gbcLstTestSuitesSelected.weightx = 10;
gbcLstTestSuitesSelected.gridwidth = 10;
gbcLstTestSuitesSelected.weighty = 8;
gbcLstTestSuitesSelected.gridheight = 8;
gbcLstTestSuitesSelected.insets = new Insets(0, 11, 10, 11);
gbcLstTestSuitesSelected.gridx = 15;
gbcLstTestSuitesSelected.gridy = 1;
JScrollPane scrollPaneTestSuitesSelected = new JScrollPane(mLstTestSuitesSelected);
panel.add(scrollPaneTestSuitesSelected, gbcLstTestSuitesSelected);

有人可以帮我弄清楚这里出了什么问题吗?

3 个答案:

答案 0 :(得分:1)

JTable here所示,您可以覆盖列表的getPreferredScrollableViewportSize()方法以指定首选的首选大小。 Uisng getRowHeight()的倍数提供了漂亮的外观。

image

答案 1 :(得分:1)

GridBagLayout尊重所包含组件的首选大小。 JList的首选大小由其内容决定。通过查看截图,很明显您的JList具有不同的内容,具体取决于您所使用的环境,因此首选大小不同并不奇怪。

如果您想要更可预测的行为,请查看setPrototypeCellValue。这允许您设置确定单元格大小的“典型值”。优于setFixedCellWidth的优点是它仍然尊重字体,显示分辨率等。

答案 2 :(得分:0)

我弄明白了为什么。顶部的横幅图像不会导出,因此会在jar的布局中造成混乱。当我将图像添加到导出jar的文件夹时,它显示与从eclipse运行的文件完全相同。谢谢大家。