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

import java.awt.Component;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

import javax.swing.table.*;

public class MyFirstJFrame extends JFrame {

// 作为测试的main方法

public static void main(String[] args) {

new MyFirstJFrame().setVisible(true);

}

/**

* 构造方法

*/

public MyFirstJFrame() {

InitialComponent();

}

/**

* 初始化组件的方法

*/

private void InitialComponent(){

// 设置窗体参数

// 设置布局模式

setLayout(null);

// 设置窗体大小

setSize(480, 360);

// 设置窗体居中(非常规方法)

setLocationRelativeTo(null);

// 关闭窗体退出程序

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

// 初始化面板

panel = new JPanel();

panel.setSize(this.getWidth(), this.getHeight());

panel.setLocation(0,0);

panel.setLayout(null);

// 初始化表格

table = new JTable(new DefaultTableModel(new Object[][]{{"第一行"},{"第二行"},{"第三行"},{"第四行"}}, new String[]{"测试行1","测试行2"}){

/* (non-Javadoc)

* 重写方法,判断表单元格是否可编辑

* 可以通过row和column索引判断某一个单元格是否可编辑

* 此处设为都不可编辑

* @see javax.swing.table.DefaultTableModel#isCellEditable(int, int)

*/

@Override

public boolean isCellEditable(int row, int column) {

return false;

}

});

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

// 通过设置列渲染

// 方法一:直接方式 使用TableColumn的setCellRenderer方法(推荐)

// 此方法可以设置某一列的渲染(即使用某一个组件--即控件来显示单元格数据)

table.getColumnModel().getColumn(1).setCellRenderer(new TableCellRenderer(){

/*(non-Javadoc)

* 此方法用于向方法调用者返回某一单元格的渲染器(即显示数据的组建--或控件)

* 可以为JCheckBox JComboBox JTextArea 等

* @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)

*/

@Override

public Component getTableCellRendererComponent(JTable table,

Object value, boolean isSelected, boolean hasFocus,

int row, int column) {

// 创建用于返回的渲染组件

JCheckBox ck = new JCheckBox();

// 使具有焦点的行对应的复选框选中

ck.setSelected(isSelected);

// 设置单选box.setSelected(hasFocus);

// 使复选框在单元格内居中显示

ck.setHorizontalAlignment((int) 0.5f);

return ck;

}});

// 方法二:先设置列编辑器,然后设置单元格渲染

// 设置列编辑器

// 在以复选框为对象设置列编辑器时,必须保证该列能够被编辑,否则无法更改状态

// (此步骤可以省略,省略时不要忘记将列设为不可编辑)

// table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new JCheckBox()));

// 设置单元格渲染(这里是设置表格级别的渲染)

/*table.setDefaultRenderer(Object.class, new TableCellRenderer(){

@Override

public Component getTableCellRendererComponent(JTable table,

Object value, boolean isSelected, boolean hasFocus,

int row, int column) {

// 判断是否为需要渲染的列

if(column == 1){

// 和方法一基本一致

JCheckBox box = new JCheckBox();

box.setSelected(isSelected);

// 设置单选box.setSelected(hasFocus);

box.setHorizontalAlignment((int) CENTER_ALIGNMENT); // 0.5f

return box;

}

// 如果不是需要渲染的列,封装文本域显示数据

return new JTextArea(value.toString());

}});*/

// 在多选是需要按住Ctrl键或者鼠标按住拖过连续的需要选中的行,应该给用户说明

// 第一种方法是被推荐的,因为它具有选中的高亮显示,界面能更加友好

table.setSize(panel.getWidth(),panel.getHeight() - 90);

table.setLocation(0, 0);

btn = new JButton("Test");

btn.setSize(80,40);

btn.setLocation((panel.getWidth()) / 2 - 40, panel.getHeight() - 80);

// 按钮点击时显示当前选中项

btn.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

for(int rowindex : table.getSelectedRows()){

JOptionPane.showMessageDialog(null, rowindex + " " + table.getValueAt(rowindex, 0));

}

}});

panel.add(table);

panel.add(btn);

this.add(panel);

}

// 定义一些必要的组件

private JPanel panel;

private JTable table;

private JButton btn;

}

在java 使什么居中的代码_java 居中的代码相关推荐

  1. java多线程代码_java多线程实例代码详解

    原文:http://blog.csdn.net/paranoidyang/article/details/70184523 作者:Paranoidyang 线程与进程的区别 (1)程序是一段静态的代码 ...

  2. java 在一个类中定义类_Java 中程序代码必须在一个类中定义,类使用( )关键字来定义。_学小易找答案...

    [填空题]每一个 else 子句都必须和它前面的一个距离它最近的 子句相对应. [单选题]有关类的说法,正确的是( ) [单选题]在JAVA中,无论测试条件是什么,下列( )循环体 将至少执行一次. ...

  3. java异常代码_Java异常(示例代码)

    Java异常处理 程序发生异常的原因有很多,通常包含以下几类: 用户输入非法数据 要打开的文件不存在 网络通信连接中断,或者JVM内存溢出 异常有的是因为用户错误引起的,有的是程序错误引起的,还有一些 ...

  4. 用java语编写求素数程序_java求素数代码

    public static void main(String args[]) { int i,n,flag; { 1.程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整 ...

  5. java调色板代码_java调色板的代码

    最近写了一段调色板的代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; /*dkplus专业搜集和编写实用电脑软件 ...

  6. java如何编写出菱形的代码_java编写菱形代码

    菱形代码 public class Diamond { public static void main(String[] args) { for (int i = 1; i <= 5; i++) ...

  7. java加减两个运算的代码_java加减乘除运算代码

    package demo; import java.util.Stack; /** * 利用栈,进行四则运算的类 * 用两个栈来实现算符优先,一个栈用来保存需要计算的数据 numStack,一个用来保 ...

  8. java 的简单代码_java初学 简单代码

    1.简单的java程序 public class RightAndWrong { public static void main(String argc[]){ boolean bool = true ...

  9. java rpg项目代码_java rpg游戏代码(移动保存读取)

    package ggg; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; i ...

最新文章

  1. CVPR2018上关于目标检测(object detection)
  2. 2021年春季学期-信号与系统-第十五次作业参考答案-第五小题参考答案
  3. 大数据算法:排位问题(2)
  4. [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换(转)
  5. 八种状态增加测试用例状态的精确度
  6. python输入字符串str_python字符串(str)
  7. nginx+php+mysql+haproxy+keepalived+NFS,搭建wordpress
  8. 【开源】本周不容错过开源论文,含分割、检索、神经渲染、deepfake 检测、超分、视频相关等...
  9. oracle获取SID
  10. 数据湖存储格式Hudi原理与实践
  11. 搭乘百度语音识别技术,录音啦识别率最高可达95%
  12. oracle列转行wm_concat,Oracle列转行函数wm_concat版本不兼容解决方案
  13. Linux umask and chmod
  14. python画图代码讲解_python画图例子代码
  15. java web整合开发完全自学手册pdf_《JavaScript完全自学手册》PDF 下载
  16. python3 tkinter教程
  17. 时间序列分析实验报告总结_时间序列分析实验报告
  18. FreeCAD源码分析:Part模块
  19. 2019年微信大数据新鲜出炉,你确定不来看看吗?
  20. Mockplus默认图标导出的方法

热门文章

  1. c++获取时钟 周期
  2. Python学习第十一天
  3. Java详细安装教程--Java(jdk)安装
  4. 真光手环诞生记:锐捷助力百年老校实现智能穿戴梦
  5. HDFS文件夹上传和下载等命令
  6. 解析:共享经济新模式,共享网红平台的新趋势
  7. Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年一月,时区转换
  8. 58商铺全新UI试客试用平台网站源码
  9. JS加密:JSON数据加密
  10. 【Spring Boot】19.集成消息