导航:首页 > 编程语言 > java多选框

java多选框

发布时间:2024-01-31 15:15:17

java swing如何在JTable一个单元格添加多个复选框

java swing中在jTable中添加多个复选框的方式如下:

importjava.awt.Component;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;

importjavax.swing.*;
importjavax.swing.table.*;


{

//作为测试的main方法
publicstaticvoidmain(String[]args){
newMyFirstJFrame().setVisible(true);
}

/**
*构造方法
*/
publicMyFirstJFrame(){
InitialComponent();
}

/**
*初始化组件的方法
*/
privatevoidInitialComponent(){
//设置窗体参数

//设置布局模式
setLayout(null);
//设置窗体大小
setSize(480,360);
//设置窗体居中(非常规方法)
setLocationRelativeTo(null);
//关闭窗体退出程序
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//初始化面板
panel=newJPanel();
panel.setSize(this.getWidth(),this.getHeight());
panel.setLocation(0,0);
panel.setLayout(null);

//初始化表格
table=newJTable(newDefaultTableModel(newObject[][]{{"第一行"},{"第二行"},{"第三行"},{"第四行"}},newString[]{"测试行1","测试行2"}){
/*(non-Javadoc)
*重写方法,判断指毕表单元格是否可编辑
*可以通过row和column索引判断某一个单元格是否可编辑
*此处设为都不可编辑
*@seejavax.swing.table.DefaultTableModel#isCellEditable(int,int)
*/
@Override
publicbooleanisCellEditable(introw,intcolumn){
returnfalse;
}
});

//开始向表格中添加复选框(注意:此示例较为简单,缺省很多判断,也没有动态代码支持)
//通过设置列渲染

//方法一:直接方式使用TableColumn的setCellRenderer方法(推荐)
//此方法可以设置某一列的渲染唯迹芹(即使用某一个组件--即控件来显示单元格数据)
table.getColumnModel().getColumn(1).setCellRenderer(newTableCellRenderer(){

/*(non-Javadoc)
*此方法用于向方法调用者返回某一单元格的渲染器(即显示数据的组建--或控件)
*可以为JCheckBoxJComboBoxJTextArea等
*@seejavax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,java.lang.Object,boolean,boolean,int,int)
*/
@Override
(JTabletable,
Objectvalue,booleanisSelected,booleanhasFocus,
introw,intcolumn){
//创建用于返回的渲染组件
JCheckBoxck=newJCheckBox();
//使具有焦点的行对应的复选框选中
ck.setSelected(isSelected);
//设置单选box.setSelected(hasFocus);
//使复选框州缓在单元格内居中显示
ck.setHorizontalAlignment((int)0.5f);
returnck;
}});

//方法二:先设置列编辑器,然后设置单元格渲染
//设置列编辑器
//在以复选框为对象设置列编辑器时,必须保证该列能够被编辑,否则无法更改状态
//(此步骤可以省略,省略时不要忘记将列设为不可编辑)
//table.getColumnModel().getColumn(1).setCellEditor(newDefaultCellEditor(newJCheckBox()));

//设置单元格渲染(这里是设置表格级别的渲染)
/*table.setDefaultRenderer(Object.class,newTableCellRenderer(){

@Override
(JTabletable,
Objectvalue,booleanisSelected,booleanhasFocus,
introw,intcolumn){
//判断是否为需要渲染的列
if(column==1){
//和方法一基本一致
JCheckBoxbox=newJCheckBox();
box.setSelected(isSelected);
//设置单选box.setSelected(hasFocus);
box.setHorizontalAlignment((int)CENTER_ALIGNMENT);//0.5f
returnbox;
}
//如果不是需要渲染的列,封装文本域显示数据
returnnewJTextArea(value.toString());
}});*/

//在多选是需要按住Ctrl键或者鼠标按住拖过连续的需要选中的行,应该给用户说明
//第一种方法是被推荐的,因为它具有选中的高亮显示,界面能更加友好
table.setSize(panel.getWidth(),panel.getHeight()-90);
table.setLocation(0,0);


btn=newJButton("Test");
btn.setSize(80,40);
btn.setLocation((panel.getWidth())/2-40,panel.getHeight()-80);

//按钮点击时显示当前选中项
btn.addActionListener(newActionListener(){

@Override
publicvoidactionPerformed(ActionEvente){
for(introwindex:table.getSelectedRows()){
JOptionPane.showMessageDialog(null,rowindex+""+table.getValueAt(rowindex,0));
}
}});

panel.add(table);
panel.add(btn);
this.add(panel);

}

//定义一些必要的组件
privateJPanelpanel;
privateJTabletable;
privateJButtonbtn;
}
阅读全文

与java多选框相关的资料

热点内容
程序员的兴趣 浏览:409
华为服务器有什么好 浏览:699
程序员和测试之间的关系 浏览:945
加密蚊帐什么意思 浏览:151
javalistclear 浏览:607
哪个app上民宿多靠谱 浏览:827
重庆服务器租用哪里有云服务器 浏览:453
土星模拟器文件夹 浏览:902
文件夹文件袋文件盒 浏览:695
云服务器打开f8指令 浏览:243
盈透证券加密币 浏览:72
阿里云服务器初始密码怎么修改 浏览:266
服务器怎么设定公用网络 浏览:99
程序员自己尝尿检测出糖尿病 浏览:593
打印添加pdf 浏览:932
苹果解压专家账号 浏览:844
度晓晓app为什么关闲 浏览:228
net文件是伪编译码吗 浏览:149
伴随矩阵的matlab编程 浏览:63
单片机和h桥是什么意思 浏览:314