利用自定义的CellEditor实现第四列第二行为下拉框,本列其余行为文本框
利用默认的DefaultCellEditor设置第五列整列为下拉框
 
package mypackage;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
/**
 * 自定义celleditor实现
 * 指定单元格设置下拉框,其他单元格设置文本框
 *
 */
public class JBoxTestCell  extends AbstractCellEditor implements
TableCellEditor {
    int row;
    private JTable table;
    private JPanel p1;
    private JComboBox jbox;
    private Object val = null;
    private JTextField jt_0=new JTextField();
    private JTextField jt_2=new JTextField();
    public JBoxTestCell() {
        p1 = new JPanel(new BorderLayout());
  
        p1.setPreferredSize(new Dimension(300, 30));
        String[] interest1 = { "rap", "手指舞", "理发","冲天炮"};
        jbox = new JComboBox(interest1);
        jbox.setPreferredSize(new Dimension(200,25));
        jbox.setSelectedIndex(0);
        p1.add(jbox, BorderLayout.CENTER);
    }
    @Override
    public boolean isCellEditable(EventObject anEvent) {
        return true;
    }
    public void showSave() {
     jbox.setVisible(true);
    }
    public Object getCellEditorValue() {
       if(row==1) {
     String v1 = jbox.getSelectedItem().toString();
        return v1;
       }
       String result="";
       switch(this.row) {
  case 0 : result = jt_0.getText().trim(); break;
  case 2 : result = jt_2.getText().trim(); break;
       }
       return result;
    }
   
    public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int row, int column) {
        this.table = table;
        this.row = row;
        val = value;
        JTextField result = new JTextField();
  switch(this.row) {
  case 0 : result = jt_0; break;
  case 1 : return this.jbox;
  case 2 : result = jt_2; break;
  }
  return result;
    }
}
 
 
 
 
package mypackage;
import java.awt.Dimension;
import java.util.Vector;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.TableColumnModel;
import java.awt.Font;
/**
 * 测试类
 * 实现第四列第二行为下拉框,其余行为文本框
 * 第五列一列为下拉框
 */
public class Test {
 
 public static void main(String[] args) {
  JFrame frame = new JFrame();
  frame.setBounds(100, 100, 500, 400);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().setLayout(null);
  JPanel panel = new JPanel();
  panel.setLayout(null);
  panel.setBounds(0, 0, 484, 361);
  frame.getContentPane().add(panel);
  frame.setVisible(true);
  
  String[][] str= {{"小贾","13","160","帽子",""},{"阿P","16","165","rap",""},{"小李","19","158","做头发",""}};
  String[] title= {"姓名","年龄","身高","爱好1","爱好2"};
  JTable table = new JTable(str,title);//测试表格
  table.setFont(new Font("微软雅黑", Font.PLAIN, 12));
  
  JScrollPane scrollPane_1 = new JScrollPane(table);//滚动组件
  scrollPane_1.setBounds(0, 0, 484, 361);
  scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
  panel.add(scrollPane_1);
  
  JBoxTestCell jc = new JBoxTestCell();//第四列第二行为下拉框,其余行为文本框
  TableColumnModel tcm = table.getColumnModel();
  tcm.getColumn(3).setCellEditor(jc);
  
  String[] str2 = { "rap", "手指舞", "理发","冲天炮"};
  JComboBox jbox= new JComboBox(str2);
  jbox.setSelectedIndex(0);
  TableColumnModel col = table.getColumnModel();
  col.getColumn(4).setCellEditor(new DefaultCellEditor(jbox));//设置第5列一列为下拉框
 }
}
 
效果图:

java swing 中JTable实现指定单元格为下拉框的更多相关文章

  1. NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)

    NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...

  2. 【Excel】单元格的下拉框是怎么做的?

    如果我们希望将产品这一列的每个单元格都能选择 左侧的产品就好了,就像这样 这里使用的是"验证数据有效性"功能 在这里: 点击F,选择F列后,打开“数据验证”,如图,选择序列,选择来 ...

  3. C# Winform 中DataGridView 实现单元格输入下拉框功能

    https://blog.csdn.net/ad13adsa/article/details/82108969 private void dataGridViewX1_EditingControlSh ...

  4. LibreOffice/Calc:单元格设置下拉菜单

     造冰箱的大熊猫,本文适用于LibreOffice Calc 5.1.6.2 + Ubuntu 16.04@cnblogs 2019/1/2 LibreOffice是一个类似Microsoft Off ...

  5. js中遍历出查询后的listmodel(下拉框系列)

    function selectclassname(){ $.ajax({ url:"queryschoolclasslists.action", async:false, data ...

  6. js中给easyUI年份,月份选择下拉框赋值

    sp中定义 js中初始化 //年度下拉框初始化 $("#yearChoose").combobox({    valueField:'year',     textField:'y ...

  7. Excel的单元格设置下拉选项并填充颜色

    如何在Excel的单元格中加入下拉选项   方法/步骤     第一步:打开excel文档,选中需加入下拉选项的单元格.      第二步:点击菜单中的“数据”->“数据有效性”->“数据 ...

  8. 在elementUI中使用 el-autocomplete 实现远程搜索的下拉框

    参考;https://blog.csdn.net/qq_37746973/article/details/78402812?utm_source=blogxgwz1 https://blog.csdn ...

  9. java swing 开发 -JTable

    最近利用空闲时间自己琢磨了一下java swing 编程,其实在从事javaweb之前我一直向往的就是java swing 开发,不知道为什么可能当时觉得Windows上的exe程序很是神奇,关于wi ...

随机推荐

  1. selenium,webdriver模仿浏览器访问百度 基础1

    这是一种比较好的反反爬技术 #安装:pip install selenium=2.48.0 #显示:pip show selenium #卸载:pip uninstall selenium #模拟用户 ...

  2. HDU 6469 /// 二分

    题目大意: 分裂怪有1到n种等级, 第1级的分裂怪称为原子怪,它不会分裂,被击杀时会产生a[1]点经验: 而第k级的分裂怪死亡时则会分裂成a[k]个第k - 1级的分裂怪. 一个体力可以杀死一个怪物. ...

  3. VMware Converter Standalone迁移概要

    VMware Converter 迁移工具使用:1.基本概念 1.1基本组件: converter standalone server:包含server和worker两个服务,这两个服务经常一起安装 ...

  4. 字符串String的使用方法

    var ddd = "举头望明月,低头思故乡" document.writeln(ddd.split(''));//选择字符串中的一个标识符,将字符串分割成数组; var slic ...

  5. Supervisor 在ubuntu系统下添加自启动

    最近在使用frp内网穿透,以便自己的工具能在外网访问.自己内网主机有时需要重启,为了工具能正常访问,所以使用supervisor工具进行进程管理,supervisor的自启动成个很必要的需求.下面简单 ...

  6. 二、kubernetes搭建集群

    一.准备工作 主要内容 .环境准备(2主机) .安装流程 .问题分析 .总结 环境配置(2主机) 系统:CentOS 7.3 x64 网络:局域网(VPC) 主机: master:172.16.0.1 ...

  7. go语言从例子开始之Example8.数组

    在 Go 中,数组 是一个固定长度的数列. package main import "fmt" func main() { 这里我们创建了一个数组 a 来存放刚好 5 个 int. ...

  8. MYSQL如何优化?

    MYSQL如何优化?结合你的经验 1.数据库的设计尽量把数据库设计的更小的占磁盘空间.1).尽可能使用更小的整数类型.(mediumint就比int更合适).2).尽可能的定义字段为not null, ...

  9. jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change

    jQuery的ajaxFileUpload插件 关于用ajaxfileupload时,遇到一个要刷新一次页面才能再次上传,用live()方法来绑定 file表单 的change事件就能够解决,直接$( ...

  10. 【leetcode】945. Minimum Increment to Make Array Unique

    题目如下: Given an array of integers A, a move consists of choosing any A[i], and incrementing it by 1. ...