java – JComboBox首选大小,选择空值但不在ComboBoxModel中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JComboBox首选大小,选择空值但不在ComboBoxModel中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2189字,纯文字阅读大概需要4分钟。
内容图文
我有以下情况:在JCombobox中,首选大小基于最大的项目大小.但是,此计算不考虑为null呈现的值.它只关心模型中的值.因此,当渲染空值的文本大于另一个元素时,标签会被截断,并且我在末尾有三个点(…).我想避免这种情况.
这是我正在谈论的一个小演示:
import java.awt.Component;
import java.awt.GridBagLayout;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TestComboBox {
protected void initUI() {
JFrame frame = new JFrame(TestComboBox.class.getSimpleName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridBagLayout());
JComboBox comboBox = new JComboBox(new Object[] { "Something", "Stuff", "Beep" });
comboBox.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value == null) {
setText("No selection");
}
return comp;
}
});
comboBox.setSelectedItem(null);
panel.add(comboBox);
frame.add(panel);
frame.setSize(200, 100);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestComboBox().initUI();
}
});
}
}
我想知道你是否有任何建议.到目前为止,我的想法是扩展JComboBox,覆盖首选大小,还执行null值的呈现,并将调用的最大维度带到super.preferredSize和空值呈现之一.但我发现这有点令人失望.
我真的不喜欢不使用prototypeDisplayValue绝对不是一个选项,因为我不知道该下拉列表中的值.
解决方法:
我没有在代码中测试这个,但我的方法是:
>确定渲染器返回的Component的preferredSize与JComboBox的实际preferredSize之间的差异.不是通过使用任何硬编码值,而是通过在幕后创建仅包含一个项目和已知渲染器的JComboBox,并将JComboBox的首选大小与已知渲染器返回的Component的大小进行比较.
>每次通过将侦听器附加到UIManager来更改“外观”时,重复步骤1
>覆盖实际JComboBox的getPreferredSize并返回super.getPreferredSize()和getPreferredSize(rendererComponent)calculatedDifference的最大宽度
这应该处理Look-and-Feel问题,避免不必要的计算,您可以轻松创建包含此功能的JComboBox扩展.
内容总结
以上是互联网集市为您收集整理的java – JComboBox首选大小,选择空值但不在ComboBoxModel中全部内容,希望文章能够帮你解决java – JComboBox首选大小,选择空值但不在ComboBoxModel中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。