JTableHeader添加全选, 反选checkbox
来源:互联网 发布:ubuntu改成中文 编辑:程序博客网 时间:2024/05/01 09:13
在JTableHeader上画了组件, 例如一个一个checkbox, 再给checkbox一个监听, 会发现checkbox的选择消息怎样也不会给触发, 这里做了一个很土的方法, 给TableHeader添加鼠标单击消息监听器.
老实说做做 SWING要做特效的时候经常要到处找, 要么就是添加新的Renderer, 新的Model, 冇法子MVC嘛.
还好做得不多.
哪位大仙要是有更好的方法, 能让TableHeader更加灵活的添加组件并且相应的, 记得回个帖. 因为这个用鼠标监听确定哪列确实应用有限.... 能够解决TableHeader能传递消息到 checkbox的监听器的话, 那肯定是对SWING很有研究的.
final int tableFirstColumn = 0;
final JTableHeader tableHeader = table.getTableHeader();
final JCheckBox selectBox = new JCheckBox(tblModel
.getColumnName(tableFirstColumn));
selectBox.setSelected(true);
tableHeader.setDefaultRenderer(new TableCellRenderer() {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
String valueStr = (String) value;
JLabel label = new JLabel(valueStr);
label.setHorizontalAlignment(JLabel.CENTER);
selectBox.setHorizontalAlignment(JLabel.CENTER);
selectBox.setBorderPainted(true);
JComponent component = (column == tableFirstColumn) ? selectBox
: label;
component.setForeground(tableHeader.getForeground());
component.setBackground(tableHeader.getBackground());
component.setFont(tableHeader.getFont());
component.setBorder(UIManager
.getBorder("TableHeader.cellBorder"));
return component;
}
});
tableHeader.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() > 0) {
int selectColumn = tableHeader.columnAtPoint(e.getPoint());
if (selectColumn == tableFirstColumn) {
boolean value = !selectBox.isSelected();
selectBox.setSelected(value);
tblModel.selectAll(value);
tableHeader.repaint();
}
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
});
老实说做做 SWING要做特效的时候经常要到处找, 要么就是添加新的Renderer, 新的Model, 冇法子MVC嘛.
还好做得不多.
哪位大仙要是有更好的方法, 能让TableHeader更加灵活的添加组件并且相应的, 记得回个帖. 因为这个用鼠标监听确定哪列确实应用有限.... 能够解决TableHeader能传递消息到 checkbox的监听器的话, 那肯定是对SWING很有研究的.
final int tableFirstColumn = 0;
final JTableHeader tableHeader = table.getTableHeader();
final JCheckBox selectBox = new JCheckBox(tblModel
.getColumnName(tableFirstColumn));
selectBox.setSelected(true);
tableHeader.setDefaultRenderer(new TableCellRenderer() {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
String valueStr = (String) value;
JLabel label = new JLabel(valueStr);
label.setHorizontalAlignment(JLabel.CENTER);
selectBox.setHorizontalAlignment(JLabel.CENTER);
selectBox.setBorderPainted(true);
JComponent component = (column == tableFirstColumn) ? selectBox
: label;
component.setForeground(tableHeader.getForeground());
component.setBackground(tableHeader.getBackground());
component.setFont(tableHeader.getFont());
component.setBorder(UIManager
.getBorder("TableHeader.cellBorder"));
return component;
}
});
tableHeader.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() > 0) {
int selectColumn = tableHeader.columnAtPoint(e.getPoint());
if (selectColumn == tableFirstColumn) {
boolean value = !selectBox.isSelected();
selectBox.setSelected(value);
tblModel.selectAll(value);
tableHeader.repaint();
}
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
});
- JTableHeader添加全选, 反选checkbox
- checkbox全选反选
- checkbox 全选 反选
- checkbox全选反选
- checkbox,全选,反选
- checkbox全选反选
- Ajax 全选、反选、取消、添加、删除、更新Checkbox实例
- bootstrap checkbox 添加checked属性 全选/反选
- checkbox全选和反选
- jquery checkbox 全选 反选
- checkbox全选/反选 动画版
- checkbox 全选 与 反选
- checkbox全选与反选
- checkbox全选与反选
- checkbox全选和反选
- checkbox全选和反选
- checkbox全选和反选
- jQuery CheckBox全选、反选
- db4o 面向对象数据库的安装使用
- 闽西八大干
- 无法注册:DAO350.dll,THREED32.OCX的解决方案
- Oracle数据库PL/SQL编码规则总结
- C# 特性(Attribute)入门
- JTableHeader添加全选, 反选checkbox
- Oracle 中修改Table的主键的方法
- 求二进制的加法,输入两个四位二进制数,求其和(二进制表示)。
- [C#问题--WebBrowser继续追踪]WebBrowser在Form程序中使用的感想3
- LabVIEW与文本朗读
- GooglePage注册成功
- GCC学习
- 电脑关闭的很慢是怎么回事?
- 连接 ACCESS 2007