- 浏览: 115788 次
- 性别:
- 来自: 上海
最新评论
-
ty709928686:
...
导出db2数据库的表结构和数据 -
suifengJC614:
对于你的第一种解决方案,其实不用那么麻烦,如果对外观有要求的话 ...
jcomboBox显示长项目的内容
如果JComboBox列表中的内容过长的话,下拉框中不全部显示
解决方法一:当鼠标放在这个过长的项目中时显示tooltip,提示用户选择这项的全部信息
setComboBoxUI(combobox);
解决方法二:获取最大长项目宽度,并设置为弹出下拉框时的宽度
combobox.setUI(new LargerComboBoxUI());
解决方法一:当鼠标放在这个过长的项目中时显示tooltip,提示用户选择这项的全部信息
setComboBoxUI(combobox);
private void setComboBoxUI(final JComboBox combobox) { combobox.setUI(new WindowsComboBoxUI() { protected ComboPopup createPopup() { return new BasicComboPopup(combobox) { protected JList createList() { return new JList(comboBox.getModel()) { public void processMouseEvent(MouseEvent e) { if (e.isControlDown()) { e = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), e.getModifiers() ^ InputEvent.CTRL_MASK, e.getX(), e.getY(), e.getClickCount(), e.isPopupTrigger()); } super.processMouseEvent(e); } public String getToolTipText(MouseEvent event) { int index = locationToIndex(event.getPoint()); if (index != -1) { Object value = getModel().getElementAt(index); ListCellRenderer renderer = getCellRenderer(); Component rendererComp = renderer.getListCellRendererComponent(this, value, index, true, false); if (rendererComp.getPreferredSize().width > getVisibleRect().width) { return value == null ? null : value.toString(); } else { return null; } } return null; } public Point getToolTipLocation(MouseEvent event) { int index = locationToIndex(event.getPoint()); if (index != -1) { Rectangle cellBounds = getCellBounds(index, index); return new Point(cellBounds.x, cellBounds.y); } return null; } }; } }; } }); }
解决方法二:获取最大长项目宽度,并设置为弹出下拉框时的宽度
combobox.setUI(new LargerComboBoxUI());
class LargerComboBoxUI extends BasicComboBoxUI { protected ComboPopup createPopup() { return new LargerComboPopup(comboBox); } public class LargerComboPopup extends BasicComboPopup { public LargerComboPopup(JComboBox comboBox) { super(comboBox); } public void show() { int selectedIndex = comboBox.getSelectedIndex(); if (selectedIndex == -1) { list.clearSelection(); } else { list.setSelectedIndex(selectedIndex); list.ensureIndexIsVisible(selectedIndex); } Insets insets = getInsets(); Dimension listDim = list.getPreferredSize(); boolean hasScrollBar = scroller.getViewport().getViewSize().height != listDim.height; if (hasScrollBar) { JScrollBar scrollBar = scroller.getVerticalScrollBar(); listDim.width += scrollBar.getPreferredSize().getWidth(); } int width = Math.max(listDim.width, comboBox.getWidth() - (insets.right + insets.left)); int height = getPopupHeightForRowCount(comboBox.getMaximumRowCount()); Rectangle popupBounds = computePopupBounds(0, comboBox.getHeight(), width, height); Dimension scrollSize = popupBounds.getSize(); scroller.setMaximumSize(scrollSize); scroller.setPreferredSize(scrollSize); scroller.setMinimumSize(scrollSize); list.revalidate(); show(comboBox, popupBounds.x, popupBounds.y); } } }
评论
1 楼
suifengJC614
2010-08-11
对于你的第一种解决方案,其实不用那么麻烦,如果对外观有要求的话,还要根据不同的创建不同的UI,其实写个代理类就可以实现,下面是我对于该解决方案的实现办法。
JComboBox 有两个方法是用来设置和获取渲染器的。分别是
根据这两个方法写代理类就行,下面是我写的代码:
JComboBox 有两个方法是用来设置和获取渲染器的。分别是
//获取 public ListCellRenderer getRenderer(); //设置渲染器 public void setRenderer(ListCellRenderer aRenderer);
根据这两个方法写代理类就行,下面是我写的代码:
JComboBox fontlist = new JComboBox(); fontlist.setRenderer(new ListCellRenderer() { private ListCellRenderer renderer = fontlist.getRenderer(); @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component component = renderer.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus); System.out.println(component.getClass()); if (component instanceof JLabel) { JLabel label = (JLabel) component; label.setToolTipText(label.getText()); } return component; } });
发表评论
-
Velocity读取模板文件的方法[转]
2012-10-30 11:04 1707我用的是velocity-1.6.4,官方自带的Example ... -
jdbc-odbc连接dbf (转)
2011-12-21 12:06 4879dbf分两种,一种是Dbase,另一种是Foxpro的 1、 ... -
jar文件数字签名
2010-10-09 11:45 6415给JAR文件数字签名 1、用keytool生成密钥: k ... -
JAVA国际化配置
2010-09-13 11:03 1220国际化(Internationalization,又称il ... -
dom XML操作
2010-09-10 17:56 892一、创建XML文件 public static vo ... -
轻松部署Java Web Start
2010-07-24 23:19 1338Java Web Start(以下简称JWS)是SUN提供 ... -
调整bufferedimage大小
2010-03-09 19:58 2632/** * 调整bufferedim ... -
JFreeChart中文使用文档
2010-03-01 16:41 1286JFreeChart类: void setAntiAlias ... -
java crash详细分析
2010-01-30 17:02 2892一. 如何得到这个日志 ... -
JComboBox实现下拉框向上显示
2009-10-24 21:42 5600JComboBox 向上弹出 写一个东西用到了 JComboB ... -
生成验证图片
2009-10-22 21:08 862private void createImage( ... -
发送邮件
2009-10-22 17:08 1030//发送邮件方法 public stat ... -
树节点状态的保存和加载
2009-10-22 10:46 1241保存树节点状态至数据库表中 this.addWindow ... -
jtable添加行标题
2009-10-15 16:11 5160将表格的第一列作为表头,使用渲染器改变其外观,看起来像表头 ... -
修改树节点
2009-10-14 17:40 1322修改jtree树节点时,需要先注册树节点的编辑事件,然后在编辑 ... -
拖拽表数据实现数据的传输
2009-10-14 17:33 1018将表中一条记录拖拽至树中节点时需在表中监听TransferHa ... -
使用序列化实现对象深拷贝
2009-10-14 17:28 1727实现树节点的深拷贝 public DefaultM ... -
JTable 实用方法
2009-09-03 23:11 13621. 设置指定行的颜色 class TableCo ... -
Double精度的常用设置
2009-08-31 23:54 9057import java.text.DecimalFormat; ... -
设计模式学习之Facade(外观模式)
2009-07-29 14:00 936GOF《设计模式》一 ...
相关推荐
Java `JComboBox` 是 Swing 组件库中的一个控件,用于在下拉列表中显示一组可选择的选项。它提供了一个简单的用户界面,允许用户从预定义的选项中进行单选。`JComboBox` 在 Java 图形用户界面(GUI)编程中非常常见...
当用户在`JComboBox`中选择一个文件夹后,`JList`可以实时更新,显示该文件夹中的内容。开发者可能通过监听`JComboBox`的选择事件,动态更新`JList`的模型(`DefaultListModel`),这样用户就可以在`JList`中查看并...
这可以通过`new JCheckBox(String text)`构造函数完成,其中`text`参数是显示在复选框旁边的文本。 2. **构建模型**:接着,你需要构建一个模型来存储这些复选框。你可以使用`DefaultComboBoxModel`类,通过添加`...
你还可以自定义渲染器和编辑器来改变`JComboBox`的显示和编辑行为。 总的来说,`JComboBox`结合`ComboBoxModel`是Java Swing中创建交互式下拉列表的强大工具。通过理解`ComboBoxModel`的工作原理以及如何与`...
在你的项目中,你可能遇到了一个问题:当`JComboBox`未被选中时,其下拉箭头没有正确显示。这个问题通常是由于`JTable`的默认渲染器不支持`JComboBox`导致的。 首先,我们需要理解`JTable`的工作原理。`JTable`中的...
在"Multicolumn JCombobox_DEMO_multicolumncombobox_"这个项目中,我们可能看到一个演示如何创建并使用这种多列组合框的示例。DEMO通常是为了展示特定功能或技术而编写的简化代码,帮助开发者理解并学习如何实现。...
5. **Listener**:为了响应用户的操作,如打开下拉框或选择项目,我们需要添加监听器,如ActionListener或ItemListener。这些监听器可以捕捉事件并触发相应的操作,如从数据库或网络加载新数据。 6. **User ...
本文将详细介绍使用 JDBC 连接数据库,实现用户登录、用户注册、JComboBox 中显示数据库中的记录和 JTable 显示数据库中的记录的方法。 JDBC 简介 JDBC(Java Database Connectivity)是 Java 语言中用来连接...
4. **模型定制**:通过继承`DefaultComboBoxModel`并实现自己的`MyModel`类,可以更灵活地控制`JComboBox`的内容和行为。 5. **初始化窗口**:设置窗口标题、大小和可见性等属性,确保窗口能够正常显示。 #### 五、...
- 当用户在 `jComboBox1` 中选择了一个项目时,`jComboBox2` 的内容会被清空,并重新填充为当前选中的项目加上 "A" 或 "B"。 - 默认情况下,`jComboBox2` 会选择第一个添加的项目。 - **`jComboBox2` 的事件处理...
为了更好地理解项目,我们需要解压这个文件,查看源代码结构和文件内容。一般来说,这样的系统会包含以下部分: 1. **主界面**:通常由一个Java Swing的JFrame或JDialog构成,展示登录界面或者主菜单。 2. **数据库...
在这个项目中,我们将使用Java和NetBeans IDE来创建一个简单的应用程序,它包含一个下拉式选择列表,用于显示四个不同的班级(2004(1)班,2004(2)班,2004(3)班,2004(4)班),并根据用户的选择在文本区域中显示对应...
在项目中,每个功能的实现都是相似的,都是通过点击叶子节点的人员调用后,调用了相应的实现类,右面板显示相应的人员调用面板,包括JLabel、Jtable、TextField、JComboBox等控件。 三、修改篇 在项目中,需要对...
在项目管理系统中,可能用到了JFrame作为主窗口,用JTabbedPane实现多标签页功能,用JTable展示项目的任务列表和进度,以及用JComboBox或JList来选择和分配项目成员。 Swing支持事件监听机制,使得用户与界面的交互...
5. **JComboBox**:下拉列表提供了可选择的选项列表。你可以通过`addItem(Object item)`添加选项,`setEditable(boolean editable)`设置是否可以自定义输入。命名时,通常以`cbo_`开头。 6. **JPasswordField**:...
JComboBox是一个允许用户从一组预定义选项中选择一个或多个项目的控件。在这个场景中,我们需要实现的是一个多选功能的JComboBox,并且能够实时计算选中项的值之和。 首先,让我们深入了解一下JComboBox。JComboBox...
项目的源代码可能包含了对Swing组件的实例化、布局设置、事件处理和外观配置等内容,这些都是学习和理解Swing编程的重要实践案例。 总的来说,Java Swing是Java GUI开发的强大工具,通过熟练掌握Swing,开发者可以...
9. **设计模式**:可能涉及到MVC(模型-视图-控制器)设计模式,将界面显示、用户交互和数据处理分离,使得代码更易于维护和扩展。 10. **版本控制**:项目可能使用Git进行版本控制,了解如何使用git commit, git ...
- 图片缩略图:在`JComboBox`中显示图片的缩略图,以便用户能更直观地知道所选图片的内容。 以上就是关于"java swing程序实现点击图片列表改变图片"的核心知识讲解,通过理解和应用这些知识点,开发者可以创建出...
这样,根据用户的选择,程序可以显示不同的语言版本。 7. **单元测试与集成测试** 开源项目通常会包含测试代码,使用JUnit或其他测试框架进行单元测试和集成测试,以验证各个功能模块的正确性。这有助于保证代码...