| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 783 人关注过本帖
标题:最后问个swing的问题,看看有没有人回答
只看楼主 加入收藏
angelnana
Rank: 1
等 级:新手上路
帖 子:178
专家分:0
注 册:2007-8-13
收藏
 问题点数:0 回复次数:2 
最后问个swing的问题,看看有没有人回答

谁能告诉我被注释掉的那四行的作用是什么?
这个代码的作用是让一个表可以行选中,列选中,单元格选中,等等。。。
public class TableSelectionTest {
public static void main(String[] args){
JFrame frame = new TableSelectionFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

class TableSelectionFrame extends JFrame{
public TableSelectionFrame(){
setTitle("TableSelectionTest");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
model = new DefaultTableModel(10,10);

for(int i = 0; i < model.getRowCount(); i++){
for(int j = 0; j<model.getColumnCount(); j++){
model.setValueAt((i+1)*(j+1),i,j);
}
}

table = new JTable(model);

add(new JScrollPane(table),BorderLayout.CENTER);

removedColumns = new ArrayList<TableColumn>();

JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);

JMenu selectionMenu = new JMenu("Selection");
menuBar.add(selectionMenu);

final JCheckBoxMenuItem rowsItem = new JCheckBoxMenuItem("Rows");
final JCheckBoxMenuItem columnsItem = new JCheckBoxMenuItem("Columns");
final JCheckBoxMenuItem cellsItem = new JCheckBoxMenuItem("Cells");

rowsItem.setSelected(table.getRowSelectionAllowed());
columnsItem.setSelected(table.getColumnSelectionAllowed());
cellsItem.setSelected(table.getCellSelectionEnabled());

rowsItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
table.clearSelection();
table.setRowSelectionAllowed(rowsItem.isSelected());
//cellsItem.setSelected(table.getCellSelectionEnabled());
}
});
selectionMenu.add(rowsItem);

columnsItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
table.clearSelection();
table.setColumnSelectionAllowed(columnsItem.isSelected());
//cellsItem.setSelected(table.getCellSelectionEnabled());
}
});
selectionMenu.add(columnsItem);

cellsItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
table.clearSelection();
table.setCellSelectionEnabled(cellsItem.isSelected());
//rowsItem.setSelected(table.getRowSelectionAllowed());
//columnsItem.setSelected(table.getColumnSelectionAllowed());
}
});
selectionMenu.add(cellsItem);

JMenu tableMenu = new JMenu("Edit");
menuBar.add(tableMenu);

JMenuItem hideColumnsItem = new JMenuItem("Hide Columns");
hideColumnsItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
int[] selected = table.getSelectedColumns();
TableColumnModel columnModel = table.getColumnModel();

for(int i = selected.length-1;i >=0;i--){
TableColumn column = columnModel.getColumn(selected[i]);
table.removeColumn(column);
removedColumns.add(column);
}
}
});
tableMenu.add(hideColumnsItem);

JMenuItem showColumnsItem = new JMenuItem("Show Columns");
showColumnsItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
for(TableColumn tc:removedColumns)
table.addColumn(tc);
removedColumns.clear();
}
});
tableMenu.add(showColumnsItem);

JMenuItem addRowItem = new JMenuItem("Add Row");
addRowItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
Integer[] newCells = new Integer[model.getColumnCount()];
for(int i = 0;i<newCells.length;i++)
newCells[i] = (i+1)*(model.getRowCount()+1);
model.addRow(newCells);
}
});
tableMenu.add(addRowItem);

JMenuItem removeRowsItem = new JMenuItem("Remove Rows");
removeRowsItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
int[] selected = table.getSelectedRows();
for(int i = selected.length-1;i>=0;i--)
model.removeRow(selected[i]);
}
});
tableMenu.add(removeRowsItem);

JMenuItem clearCellsItem = new JMenuItem("Clear Cells");
clearCellsItem.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
for(int i = 0;i<table.getRowCount();i++)
for(int j = 0;j<table.getColumnCount();j++)
if(table.isCellSelected(i,j))
table.setValueAt(0,i,j);
}
});
tableMenu.add(clearCellsItem);

}

private DefaultTableModel model;
private JTable table;
private ArrayList<TableColumn> removedColumns;

private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 300;
}

搜索更多相关主题的帖子: swing 
2007-10-23 15:26
chenzhanpeng
Rank: 1
等 级:新手上路
帖 子:271
专家分:0
注 册:2007-1-5
收藏
得分:0 
兄弟,有很多类包你没有导入,怎么用啊

生在蓝天下,共同成长进步。(:
2007-10-28 11:29
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
收藏
得分:0 
JTable的getCellSelectionEnabled()在JDK API文档中的描述:
public boolean getCellSelectionEnabled()
如果同时启用了行选择模型和列选择模型,则返回 true。
等效于 getRowSelectionAllowed() && getColumnSelectionAllowed()
JCheckBoxMenuItem 中的setSelected()描述如下:
public void setSelected(boolean b)
设置按钮的状态.注意,此方法不会触发 actionEvent.调用 doClick 以执行程序上的动作更改。
如果要选择按钮,则该参数设为 true,否则为 false;
大概的意思就是如果table启用了行选择模型或列选择模型之类的,
就把JCheckBoxMenuItem对应的菜单按钮设成选中状态之类的吧.............

头可断,发型不可乱;血可流,皮鞋不可不擦油;
2007-10-28 12:14
快速回复:最后问个swing的问题,看看有没有人回答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030365 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved