有关java swing 中 用JCheckBox 控制 JTable增加或删除列
2个回答
2011-11-10
展开全部
这个我也回答了吧,别忘了采纳哦
这个,就是每个 checkbox 加 itemchange 事件
哪个被选中了,就显示表格中的哪列
哪个取消选中,就隐藏表格中的哪列
隐藏列,你百度搜索 JTable 隐藏列 就可以了
这个,就是每个 checkbox 加 itemchange 事件
哪个被选中了,就显示表格中的哪列
哪个取消选中,就隐藏表格中的哪列
隐藏列,你百度搜索 JTable 隐藏列 就可以了
更多追问追答
追问
这里需要的是删除,不是隐藏。道理我懂。
问题是,怎么知道删除或增加哪列呢?可以提供个demo给我吗?
追答
先给你个例子,我先回家了,你提的另一个我也回答了,都采纳哦
你这样做,感觉就是给自己找事.....
======================
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.TableColumn;
public class T extends JFrame {
final Map mapData = new HashMap();
public T() {
Object [] colName = {"序号", "费用项"};
Object [][] data = {{1, "包装费"},{2, "报价服务"}};
final JCheckBox box = new JCheckBox("序号");
final JTable table = new JTable(data, colName);
JScrollPane pane = new JScrollPane();
pane.getViewport().add(table);
box.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (box.isSelected()) {
String name = box.getText();
if (mapData.get(name) != null && mapData.get(name) instanceof TableColumn) {
table.addColumn(mapData.get(name));
}
} else {
for (int i = 0; i < table.getColumnCount(); i++) {
TableColumn column = table.getColumnModel().getColumn(i);
String name = column.getHeaderValue().toString();
if (name.equals(box.getText())) {
mapData.put(name, table.getColumnModel().getColumn(i));
table.removeColumn(column);
}
}
}
}
});
JPanel pnl = new JPanel(new BorderLayout());
pnl.add(box, BorderLayout.NORTH);
pnl.add(pane, BorderLayout.CENTER);
add(pnl);
setSize(400, 300);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
new T().setVisible(true);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询