首页
学习
活动
专区
工具
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 用于询问表格式数据模型方法。

    5K10

    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.4K10

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

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

    3.7K40

    ABAP 如何将自定义区域菜单添加到系统默认菜单

    在SAP应用,不同公司往往会根据自身需求开发很多报表或者功能页面,同样也会对这些客制化开发功能进行分类,并且这些分类菜单是能够被所有用户读取。...在SAP Easy Access中所显示系统菜单一般也被称之为区域菜单,区域菜单输入点默认是S000,可以通过事务代码SSM2来查看及设置系统默认区域菜单输入点,如下图所示: ?...当然我们也可以在它下面进行扩展,增加自定义区域菜单,具体操作如下: 1、输入事务代码SE43,在“区域菜单”字段输入S000,然后单击工具栏“编辑”按钮,系统将弹出“指定处理模式”对话框,需要用户选择使用哪种更改模式...2、在区域菜单编辑页面中选择主菜单,然后执行“编辑”-“导入”-“其他菜单”命令,在弹出“区域菜单选择”对话框输入自定义区域菜单名称,如下图所示: ? ?...3、保存上述设置,可以在初始页面中看到新增自定义区域菜单,该区域菜单可以分配系统中所有的用户浏览及操作。 参照以上方法,可以根据不同用户具体业务需求来设置区域菜单。 ?

    3.7K10

    如何在Java中使用Table

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

    2.1K40

    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.1K10

    java winform开发之JTable全攻略

    列表在任何一门开发语言中都占有非常重要地位,在.Net中有GridView,在extjs中有GridPanel。。。,而在java Swing,它名字叫JTable。...后,只要调用JTablesetModel方法,就可以将头及数据信息显示在表格啦。...2)怎样添加行点击事件 首先,在JTable设计视图中先选中JTable,然后右击,在事件弹出菜单依次选中"mouse-click”就可以捕捉表格点击事件了,在这个事件监听方法,会传入一个java.awt.event.MouseEvent...我定义自定义单元格对象是这样,有三个属性,一个是id,一个是text,还有一个是自定义对象项,id当然是这个行唯一标识啦,text是单元格要显示内容,而自定义对象项,则是为了方便在这个单元格对象附加一个对象...4)怎样在JTable动态添加新行 其实这个问题非常简单,只要根据模型生成相应行对象,然后通过调用JTablemodel对象addRow方法就ok了,由于过于简单,所以直接贴代码来说明问题:

    1.2K30

    JavaSwing 图形界面GUI王者级开发(大纲)

    JTextField(文本框) JavaSwing_2.7: JPasswordField(密码框) JavaSwing_2.8: JTextArea(文本区域) JavaSwing_2.9: JComboBox...JavaSwing_4.5: JMenuBar(菜单栏) JavaSwing_4.6: JToolBar(工具栏) JavaSwing_4.7: JPopupMenu(弹出菜单) JavaSwing_4.8: JTable...(表格) JavaSwing_4.9: JTree(树) JavaSwing_4.10: JInternalFrame(内部窗口) 5 相关特性 JavaSwing_5.1: 组件位置和尺寸 JavaSwing...绘图: 使用Graphics类绘制线段、矩形、椭圆/圆弧/扇形、图片、文本 Java图片操作 — 图片读取、绘制、缩放、裁剪、保存 Java代码截屏:使用 Java 代码截取电脑屏幕并保存 Java...模拟鼠标键盘输入事件 — Robot 类 Java操作桌面应用 — Desktop 类 Java操作系统剪贴板(Clipboard)实现复制和粘贴 7 更多操作 如何在Swing组件中使用HTML

    1.3K10

    javasort排序算法_vbasort按某排序

    大家好,又见面了,我是你们朋友全栈君。 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
    领券