首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将唯一的JComboBox添加到JTable(Java)中的列

要将唯一的JComboBox添加到JTable(Java)中的列,您需要创建一个自定义的表格模型,该模型将包含一个JComboBox。以下是一个简单的示例,说明如何实现此目标:

  1. 首先,创建一个自定义的表格模型,该模型将包含一个JComboBox。
代码语言:java
复制
import javax.swing.*;
import javax.swing.table.AbstractTableModel;

public class ComboBoxTableModel extends AbstractTableModel {
    private String[] columnNames = {"Column 1", "Column 2", "Column 3"};
    private Object[][] data = {
            {"Item 1", "Item 2", "Item 3"},
            {"Item 4", "Item 5", "Item 6"},
            {"Item 7", "Item 8", "Item 9"}
    };
    private JComboBox<String> comboBox = new JComboBox<>(new String[]{"Option 1", "Option 2", "Option 3"});

    public ComboBoxTableModel() {
        comboBox.setEditable(true);
    }

    @Override
    public int getRowCount() {
        return data.length;
    }

    @Override
    public int getColumnCount() {
        return columnNames.length;
    }

    @Override
    public String getColumnName(int column) {
        return columnNames[column];
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return getValueAt(0, columnIndex).getClass();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        return data[rowIndex][columnIndex];
    }

    @Override
    public void setValueAt(Object value, int rowIndex, int columnIndex) {
        data[rowIndex][columnIndex] = value;
        fireTableCellUpdated(rowIndex, columnIndex);
    }

    public JComboBox<String> getComboBox() {
        return comboBox;
    }
}
  1. 接下来,创建一个JTable,并将自定义表格模型添加到JTable中。
代码语言:java
复制
import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import java.awt.*;

public class ComboBoxTableExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JTable with ComboBox Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 400);

        ComboBoxTableModel tableModel = new ComboBoxTableModel();
        JTable table = new JTable(tableModel);

        TableColumn column = table.getColumnModel().getColumn(1);
        column.setCellRenderer(new ComboBoxRenderer(tableModel.getComboBox()));
        column.setCellEditor(new ComboBoxEditor(tableModel.getComboBox()));

        frame.add(new JScrollPane(table));
        frame.setVisible(true);
    }
}
  1. 最后,创建一个自定义的单元格渲染器和单元格编辑器,以便在JTable中显示和编辑JComboBox。
代码语言:java
复制
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.*;

public class ComboBoxRenderer extends JComboBox<String> implements TableCellRenderer {
    public ComboBoxRenderer(JComboBox<String> comboBox) {
        setModel(comboBox.getModel());
        setSelectedIndex(comboBox.getSelectedIndex());
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        setSelectedItem(value);
        return this;
    }
}

class ComboBoxEditor extends DefaultCellEditor {
    public ComboBoxEditor(JComboBox<String> comboBox) {
        super(comboBox);
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        JComboBox<String> comboBox = (JComboBox<String>) getComponent();
        comboBox.setSelectedItem(value);
        return comboBox;
    }
}

现在,您已经成功地将唯一的JComboBox添加到了JTable中的列。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

图书管理系统代码 4SearchFrame (…

import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout...("按编号",true); Radio_name   = new JRadioButton("按书名"); Radio_author = new JRadioButton("按作者"); // 将按钮添加到按钮组中...int m = Integer.parseInt(textField.getText()); book_search =(Book)obo.readObject();//先读取第一个对象 // 如果文本框中输入的文字出现在某个对象中执行以下操作...Radio_author.isSelected()){ int m=0; do{ if(m<=n){ book_search =(Book)obo.readObject();//先读取第一个对象 // 如果文本框中输入的文字出现在某个对象中执行以下操作...button_cancel; private  JComboBox comBoBox; private JTextField textField ; private JTable  table_search

1.2K20
  • 如何将MV中的音频添加到EasyNVR中做直播背景音乐?

    EasyNVR已经支持自定义上传音频文件,可以做慢直播场景使用,前两天有一个开发者提出一个问题:想把一个MV中的音频拿出来放到EasyNVR中去做慢直播。...经过我们的共同研究之后,终于想出一个办法,就是先将这个音乐提取出来,再添加进EasyNVR中。...我们采用的是ffmpeg命令行的方法拿到AAC数据,具体命令如下: ffmpeg -i input-video.mp4 -vn -acodec copy output-audio.aac 将获取的AAC...不得不说ffmpeg就是强大,ffmpeg是专门用于处理音视频的开源库,既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg,ffplay,ffprobe,来编辑你的音视频文件...如果大家对我们的开发及产品编译比较感兴趣的话,可以关注我们博客,我们会不定期在博客中分享我们的开发经验和一些功能的使用技巧,欢迎大家了解。

    4.1K40

    Java Swing JTable

    1 简介 JTable用于显示和编辑常规的二维单元格表。有关面向任务的文档和使用JTable的示例,请参见Java教程中的如何使用表。...默认情况下,列可能会在JTable中重新排列,以使视图的列以与模型中的列不同的顺序出现。这一点根本不影响模型的实现:对列进行重新排序时,JTable在内部维护列的新顺序并在查询模型之前转换其列索引。...添加表格到容器中有两种方式: 添加到普通的中间容器中,此时添加的jTable只是表格的行内容,表头(jTable.getTableHeader())需要额外单独添加。...此添加方式适合表格行数确定,数据量较小,能一次性显示完的表格; 添加到JScrollPane滚动容器中,此添加方式不需要额外添加表头,jTable添加到jScrollPane中后,表头自动添加到滚动容器的顶部...再把滚动面板添加到其他容器中显示 ? TableModel TableModel 接口指定了 JTable 用于询问表格式数据模型的方法。

    5.1K10

    java swing 添加 jcheckbox复选框

    值得一提的是在这七个构造方法中,设计器(如果您使用了MyEclipse)使用的是JTable(TableModel dm)这个版本。...而一般情况使用JTable(Vector rowData,Vector columnNames)       在Java方法中,如果参数需要传递接口,可以在调用方法时传递一个(匿名)对象,该对象是一个不具名的类的实例...new ……()是构造方法,调用来构造一个匿名对象,其后的{}不是Java的特殊语法,但是Java中可以将方法定义在里面(这里的方法生命周期与匿名对象相 同),当然,此处是用于实现接口的方法。...在详细说明之前先解释一下JTable的显示原理:       首先是数据来源,您使用JTable的构造方法,大部分重载中参数即包含了数据,比如JTable(VectorrowData, Vector columnNames...其次是表格样式,表格将数据和如何显示数据(比如列数量、列名称、是否可编辑)保存在其数据模版中,该模版实现自接口TableModel。   最后,表格(每一个单元格)可以设置渲染效果。

    3.3K00

    java swing一篇轻松学习(高考后可以自学)

    添加到的组件 int getIconTextGap() 返回此标签中显示的文本和图标之间的间隔量 int getHorizontalTextPosition() 返回 JLabel 的文本相对其图像的水平位置...(Rectangle r) 向左或向右滚动文本框中的内容 void setColumns(int columns) 设置文本框最多可显示内容的列数 void setFont(Font f) 设置文本框的字体...cmb=new JComboBox(); //创建JComboBox cmb.addItem("--请选择--"); //向下拉列表中添加一项 cmb.addItem("长命百岁"...绑定jdbc的数据就能做具体操作了 方法名称 说明 getColumnCount() 返回列模型中的列数 getColumnN ame(int column) 返回出现在视图中 column 列位置处的列名称...getRowCount() 返回 JTable 中可以显示的行数(给定无限空间) getRowSorter() 返回负责排序的对象 getSelectedColumn() 返回第一个选定列的索引,如果没有选定的列

    9.6K10

    Java Swing 期末大作业-----图书借阅管理系统

    如果系统管理员想要删除某个用户(长期不登录,或者登陆异常)的用户信息,那么就需要在后台中写一个删除用户的功能,根据用户名进行删除(前提:数据库中对应字段设为唯一)。...用户表用于存储系统中的用户信息,如表6所示 数据库中具体的表相关信息 子项目:图书借阅系统中类的应用 数据库操作具体表相关的类,如图7所示 具体表中数据对应的实体类(pojo),如图8所示...Swing实现的Java可视化界面相关的类,如图9所示 实现前端界面与后端数据交互的类(事件),如图10 所示 子项目:图书借阅系统界面设计与实现 1、创建登录界面 用户在文本框中输入用户名和密码...11.用户增加功能实现    在文本框中输入用户名和密码,点击添加,将对应信息放到user类中,在插入到user表中。 用户名都是唯一的,不能输入已经存在过的用户名。...老师可能考虑大家初学Java的原因不敢讲深,不过我在这个项目中该注意到点到的都有,单例模式+双重校验锁获取数据库唯一实例且线程安全,sql语句用占位符替换不用字符串拼接以防sql注入等等。

    3.9K40

    JComboBox和JTextField组件

    JComboBox类的常用方法 方法声明 功能描述 public JComboBox() 创建一个没有可选项的组合框 public JComboBox(Object[] items) 创建包含指定数组中的元素的...添加ItemListener监听事件 表12.9中,列举了JComboBox类的常用方法,接下来通过案例来演示JComboBox类的使用,如例12-9所示。...JTextField类的构造方法 构造方法声明 功能描述 public JTextField() 创建一个新的TextField public JTextField(int columns) 创建一个具有指定列数...text, int columns) 创建一个用指定文本text和列数columns的新 TextField 表12.11中列举出了JTextField类的构造方法,接下来通过案例来演示JTextField...例12-10运行结果 图12.12中,运行程序先创建了JFrame窗体,然后创建了JTextField文本框对象并设置内容为“AAA软件教育”,将文本框添加到JFrame窗体,接着创建一个按钮,将其添加到

    12210

    如何在Java中使用Table

    大家好,我是小面,今天给大家分享一下在java中如何运用Table。 在Java中,表用于将数据排列成列和行。列是表中水平排列的空间,而行是表中垂直排列的空间。...列和行之间的交点称为单元格,用于保存单条数据。 在Java中,开发人员可以使用JTable方法在其应用程序中创建表。JTable是从JComponent类继承的Swing组件。...如何在Java中创建表 要创建表,需要创建JTable类的实例。...如何在Java中管理列宽和列高 如果要设置行的高度,可以使用setRowHeight()方法。...上面显示的代码示例将表直接添加到JFrame容器中。但是,您可以将表添加到滚动窗格中,这样当数据超出容器时,用户可以轻松浏览数据。

    2.2K40

    数据库系统课程设计 --- 人事管理系统(超详细)

    在看该文章之前,我希望大家能够从头慢慢看下去,而不是直接去复制代码,该 课程设计其实可以学到一些东西的,说不定以后也许能够用上来的 前言 -- jar 包的导入 下面我是在 IDEA 中实现的代码,...cDescription:一个字符字段(长度为20),用于描述人事变动类型的具体含义。 主键:cCode 是主键,用来唯一标识每种人事变动类型。...sID 字段,指示该部门的负责人 dIntro:部门简介,默认值为空 外键约束:sID 字段引用 staff 表中的 sID 字段,确保每个部门都有一位主管员工。...中的抽象方法actionPerformed(java.awt.event.ActionEvent) jBLogin.addActionListener(this); jBExit.addActionListener...员工档案查询修改界面 九、心得体会 在这次课程设计中,我遇到了很多问题,比如从零开始学习 swing,还有布局的问题,对我这种空间水平一般的人来说,要一个好一点的布局真的很难,只能去网上找大佬的布局,

    24610

    1小时学会通过Java Swing Design设计java图形化

    环境与工具: 系统环境:win10 开发工具:Eclipse IDE for Java Developers - 2020-09 数据库:MySQL5.6 学习目标: 一般大一结束的时候需要做一个类似一下内容的...---- 1、项目创建 使用eclipse直接创建一个java的空项目即可,唯一要注意的就是创建【java】的时候不是点击【class】而是创建【JFrame】,通过【JFrame】才能使用设计工具【Design...这里点【other】因为【JFrame】在这个选项栏中。...JLabel 标签 JButton 按钮 JTextArea 文本区 JTextField 文本框 JRadioButton 单选按钮 JCheckBox 复选框 JPasswordField 密码框 JComboBox...下拉列表框 JList 列表 JTable 表格 画的有些乱,但是基本上一眼就能看出来是啥:  表格JTable: JPanel设置上下布局,JScrollPane设置,这样才能显示table的标题列

    1.2K10

    java.awt.swing菜单组件

    public JMenuItem add(JMenuItem item) 将菜单项添加到弹出式菜单的末尾,设置弹出式菜单的可见性 表12.15中列出了JPopupMenu类的构造方法,它的常用方法和JMenu...12.3.1 JTable 表格也是Swing GUI编程中常用的组件,表格是一个由行、列组成的二维显示区域,Swing的JTable提供了对表格的支持,通过使用JTable创建表格是非常容易的,它的构造方法如表...JTable类的构造方法 构造方法 功能描述 public JTable() 构造一个默认的JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。...表12.16列举了JTable类的构造方法,它在创建的时候,可以把一个二维数据包装成一个表格,这个二维数据既可以是一个二维数组,也可以是集合元素为Vector的Vector对象,为了给表格每列设置列标题...,还需要传入一个一维数据作为列标题,接下来通过一个案例来演示JTable类的使用,如例12-15所示。

    13910

    java中的sort排序算法_vba中sort按某列排序

    大家好,又见面了,我是你们的朋友全栈君。 C++中提供了sort函数,可以让程序员轻松地调用排序算法,JAVA中也有相应的函数。...Arrays.sort(a); for (i=0;i<=4;i++) { System.out.println(a[i]+" "); } } } 2.基本元素从大到小排序: 由于要用到sort中的第二个参数...可以使用Interger.intvalue()获得其中int的值 下面a是int型数组,b是Interger型的数组,a拷贝到b中,方便从大到小排序。capare中返回值是1表示需要交换。...和2差不多,都是重载比较器,以下程序实现了点的排序,其中x小的拍前面,x一样时y小的排前面 package test; import java.util.*; class point { int...,那么就用到sort中的第二个和第三个参数sort(a,p1,p2,cmp),表示对a数组的[p1,p2)(注意左闭右开)部分按cmp规则进行排序 发布者:全栈程序员栈长,转载请注明出处:https:

    2.2K30
    领券