在JTable中添加下拉和复选框

package com.sky.swing;

import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;

/**
 * 在JTable中添加下拉
 * @author sky
 *
 */
public class MyComboBox {

 /**
  * @param args
  */
 public static void main(String[] args) {
  MyTable mytable=new MyTable();
  DefaultTableModel model=(DefaultTableModel) mytable.getModel();
  model.addColumn("姓名",new Object[]{"向小文","刘晓明"});
  model.addColumn("语文", new Object[] { "100","99" });
     model.addColumn("数学", new Object[] { "98","90" });
     model.addColumn("复选框", new Object[] { false,false });
   
    
     String[] values = new String[] { "90", "92", "93" };
     mytable.setComboCell(0, 1, new MyComboBoxEditor(values));//第一行的第二例为下拉
    
     JScrollPane jp=new JScrollPane(mytable);
     jp.setViewportView(mytable);
     jp.setSize(400,300);
     JFrame jf=new JFrame();
     jf.getContentPane().add(jp);
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     jf.setSize(400,300);
     jf.setVisible(true);
 }

}
//----------------表体table------------------
class MyTable extends JTable{
 int myRow=-1,myCol=-1;
 TableCellEditor myEditor;//边框编辑器
 
 public void setComboCell(int row,int col,TableCellEditor editor){
  this.myRow=row;
  this.myCol=col;
  this.myEditor=editor;
 }
 
 public TableCellEditor getCellEditor(int row,int col){
  if(row==myRow&&col==myCol&&myEditor!=null)
   return myEditor;
  return super.getCellEditor(row,col);
 }
 
  /**
   * 返回数据类型
   */
  public Class getColumnClass(int myCol) {
   return getValueAt(0, myCol).getClass();
  }
}

//-----------------------下拉编辑器-----------------------
class MyComboBoxEditor extends DefaultCellEditor{
 
 private static final long serialVersionUID = 1L;

 public MyComboBoxEditor(JCheckBox checkBox) {
  super(checkBox);
 }

 public MyComboBoxEditor(String[] value){
  super(new JComboBox(value));
 }
}

class MyCheckBoxEditor extends DefaultCellEditor{

 public MyCheckBoxEditor(JCheckBox checkBox) {
  super(checkBox);
 }
 
 public MyCheckBoxEditor() {
  super(new JCheckBox());
 }
 
 /**
  *
  */
 private static final long serialVersionUID = 1L;
 
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在JTable添加多选框,你需要使用一个自定义的渲染器和编辑器。以下是一个简单的示例,可以帮助你实现这个功能: ```java import javax.swing.*; import javax.swing.table.*; public class CheckBoxTableExample { public static void main(String[] args) { JFrame frame = new JFrame("Checkbox Table Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Object[][] data = { {"John", false}, {"Mary", false}, {"Mike", false}, {"Lisa", false} }; String[] columnNames = {"Name", "Select"}; DefaultTableModel model = new DefaultTableModel(data, columnNames); JTable table = new JTable(model) { public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } }; TableColumn selectColumn = table.getColumnModel().getColumn(1); selectColumn.setCellEditor(table.getDefaultEditor(Boolean.class)); selectColumn.setCellRenderer(table.getDefaultRenderer(Boolean.class)); JScrollPane scrollPane = new JScrollPane(table); frame.add(scrollPane); frame.pack(); frame.setVisible(true); } } ``` 在这个例子,我们首先创建了一个包含两列的表格。第一列是一个字符串,第二列是一个布尔值(多选框)。然后,我们使用默认的表格模型创建了一个JTable。为了使多选框正常工作,我们需要设置渲染器和编辑器。我们通过getColumnModel方法获取到第二列,然后调用setCellEditor和setCellRenderer方法来设置编辑器和渲染器。最后,我们将表格添加到一个JScrollPane,并将其添加到窗口。 希望这个例子可以帮助你实现在JTable添加多选框的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值