- 浏览: 114228 次
- 性别:
- 来自: 上海
最新评论
-
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 1653我用的是velocity-1.6.4,官方自带的Example ... -
jdbc-odbc连接dbf (转)
2011-12-21 12:06 4832dbf分两种,一种是Dbase,另一种是Foxpro的 1、 ... -
jar文件数字签名
2010-10-09 11:45 6348给JAR文件数字签名 1、用keytool生成密钥: k ... -
JAVA国际化配置
2010-09-13 11:03 1162国际化(Internationalization,又称il ... -
dom XML操作
2010-09-10 17:56 858一、创建XML文件 public static vo ... -
轻松部署Java Web Start
2010-07-24 23:19 1309Java Web Start(以下简称JWS)是SUN提供 ... -
调整bufferedimage大小
2010-03-09 19:58 2569/** * 调整bufferedim ... -
JFreeChart中文使用文档
2010-03-01 16:41 1252JFreeChart类: void setAntiAlias ... -
java crash详细分析
2010-01-30 17:02 2860一. 如何得到这个日志 ... -
JComboBox实现下拉框向上显示
2009-10-24 21:42 5572JComboBox 向上弹出 写一个东西用到了 JComboB ... -
生成验证图片
2009-10-22 21:08 837private void createImage( ... -
发送邮件
2009-10-22 17:08 997//发送邮件方法 public stat ... -
树节点状态的保存和加载
2009-10-22 10:46 1199保存树节点状态至数据库表中 this.addWindow ... -
jtable添加行标题
2009-10-15 16:11 5127将表格的第一列作为表头,使用渲染器改变其外观,看起来像表头 ... -
修改树节点
2009-10-14 17:40 1289修改jtree树节点时,需要先注册树节点的编辑事件,然后在编辑 ... -
拖拽表数据实现数据的传输
2009-10-14 17:33 981将表中一条记录拖拽至树中节点时需在表中监听TransferHa ... -
使用序列化实现对象深拷贝
2009-10-14 17:28 1695实现树节点的深拷贝 public DefaultM ... -
JTable 实用方法
2009-09-03 23:11 13181. 设置指定行的颜色 class TableCo ... -
Double精度的常用设置
2009-08-31 23:54 9005import java.text.DecimalFormat; ... -
设计模式学习之Facade(外观模式)
2009-07-29 14:00 888GOF《设计模式》一 ...
相关推荐
很久没用JAVA了,现在项目上需要在jtable里用jcombobox做显示,自己写了一些但是没有选择的时候没有下拉按钮,这个例子纠正了这个问题
使用JDBC连接数据库并进行数据表增删改查 使用JDBC 实现用户登录 使用JDBC 实现用户注册 JComboBox 中显示数据库中的记录 用JTable 显示数据库中的记录
Jcombobox Jradiobutton Jcheckbox(Netbeans-GUI) GUI-将选定的行值从JTable显示到JTextfields | 单选按钮| 复选框| 组合框 浏览图像文件并使用Java Swing在Jlabel上显示它 如何从计算机显示图像并将图像插入到...
该项目中包含功能点(java导出excel文件、jcombobox省市区三级联动、jdbc中java反射的应用、swing组件用户登录,显示数据、jdbc操作mysql数据库),有对应jar包,对应sql文件。
实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例128 多个小文件合成一个文件 181 ...
1.编写Application程序,在Frame中加入2个按钮(Button)和1个标签(Label),单击两个按钮,...4.在Application中加入1个滚 动列表框List、1个下拉列表框ComboBox和1个按钮,点击按钮将List中的项目移到ComboBox组件中。
in static - initComptesPerso() 对于 JComboBox 视图: - fenetreVirement 显示几乎清晰重做 Creationaccounts(重命名为 addAccount) 必须将帐户添加到列表(jcombobox) 必须添加到收款人账户文件中3 月 16 日...
该项目提供以可视方式工作的 J2SE Java Beans,以实现应用程序连接到数据库以在屏幕上显示其数据并对其进行操作的软件。 通过这种方式,这些 J2SE Java Bean 与数据库一起完成了类似于 JButton、JComboBox 和其他 ...
实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例128 多个小文件合成一个文件 181 ...
实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例128 多个小文件合成一个文件 181 实例129 统计指定...
实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例128 多个小文件合成一个文件 181 实例129 统计指定...
实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例128 多个小文件合成一个文件 181 实例129 统计...
解压后是一个JBUILDER项目的目录结构,里面有一个test.bat文件和OpenSwing.jar(主库文件)/OpenSwingBeanInfo.jar(可视开发支持文件),直接执行test.bat进行测试。 <br>■ OpenSwing的发布: 只需要将...
解压后是一个JBUILDER项目的目录结构,里面有一个test.bat文件和OpenSwing.jar(主库文件)/OpenSwingBeanInfo.jar(可视开发支持文件),直接执行test.bat进行测试。 ■ OpenSwing的发布: 只需要将OpenSwing.jar(主库...
7.2.6显示文件内容241 7.2.7文件的复制243 7.2.8顺序输入流244 7.2.9管道输入输出流246 7.2.10过滤输入输出流248 7.3Reader和Writer类使用249 7.3.1InputStreamReader类中的方法249 7.3.2OutputStreamWriter...
学生提问:图11.15和图11.16显示的所有按钮都紧挨在一起,如果希望像FlowLayout、GridLayout等布局管理器指定组件的间距该怎么办? 397 11.4 AWT 常用组件 398 11.4.1 基本组件 398 11.4.2 对话框 400 11.5 事件...