比如我JCombobox中有"AAA","BBB","CCC"三个选项放在JTable的第一列.当我第一行选择了 AAA的时候,新增一行输入的时候第二行选择框就只能选择 "BBB","CCC".当选择了 "CCC"时
再新增一行的时候,下拉框里就只有一个"BBB"的选项.
请问这样的效果该如何实现.希望高手能提示一下算法,并提供部分代码.谢谢
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class TableTest extends JFrame
{
private JTable table;
public TableTest(){
String[] array=new String[11];
for(int i=0;i<10;i++)
array[i]=""+(i+1);
array[10]="未选择";
JComboBoxCellEditor editor=new JComboBoxCellEditor(array);
table=new JTable(new Object[][]{{"未选择",1},{"未选择",2},{"未选择",3},{"未选择",4},{"未选择",5},{"未选择",6}},
new Object[]{"Column1","Column2"});
TableColumnModel colModel=table.getColumnModel();
colModel.getColumn(0).setCellEditor(editor);
this.add(new JScrollPane(table),BorderLayout.CENTER);
this.setSize(200,200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
new TableTest();
}
class JComboBoxCellEditor extends DefaultCellEditor
{
private Object needRemove=null;//下次点击JComboBox时,需要删除的选项
private Object needAdd=null;//下次点击JComboBox时,需要添加的选项
private Object value;//当前comboBox显示的值
private JComboBox comboBox=null;
public JComboBoxCellEditor(Object[] value){
super(new JComboBox(value));
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column){
if(comboBox==null){//初始化comboBox
comboBox=(JComboBox)super.getTableCellEditorComponent(table, value, isSelected, row, column);
comboBox.addItemListener(new ItemHandler());//添加事件监听
comboBox.setSelectedIndex(10);
}
this.value=value;//当前JComboBox显示的选项
if(needAdd!=null)
comboBox.addItem(needAdd);
if(needRemove!=null)
comboBox.removeItem(needRemove);
return comboBox;
}
private class ItemHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e){
needRemove=comboBox.getSelectedItem();
//当JComboBox显示的选项与用户选择的选项不同时
//需要将原来的显示的选项加入JComoboBox
if(!comboBox.getSelectedItem().equals(value)&&!"未选择".equals(value)){
needAdd=value;
}
else
needAdd=null;
}
}
}
}
最近做一个基于java swing配置的项目,其中遇到很多问题,由于java swing开发可能相对冷门,在网上并没有好的解决方案,经过一段时间研究后整理了一些经验总结,权当记录。 解决功能如下: jtable某行作为combobox...
在JTable单元格中实现可选择的JComboBox,经典例子源码(如设置性别)[@more@]性别的例子,使用方法如下: TableColumnModel tcm = table.getColu...
import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.DefaultCellEditor;...imp
import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.DefaultCellEditor...imp...
刚开始学java一个多月.问题可能比较弱智请大家原谅 主要是制作一个JComboBox...3.JComboBox弹出JTable完成. 第一步 制作一个JComboBox,并可以从数据库取出值 出现问题了,感觉是基础的问题.自己写了个JCombo...
如同其它的Swing组件,JTable使用MVC(模型、试图、控制器)设计方式,将可视化组件(JTable实例)从其数据(TableModel实现)中分离出来。·TableModel接口1、TableModel为JTable提供·显示的数据·表格的维数·表格中每...
Using a Combo Box as an EditorSetting up a combo box as an editor is simple, as the following example shows. The bold line of code sets up the combo box as the editor for a specific column.TableColumn
table中插入combobox, 并能够【根据条件】【动态】修改【某一行】的combobox中可选项
本人在JTable中添加了JComboBox控件,通过一个按钮去触发子界面,如果在JTable中触发了JComboBox控件就会导致需要弹出的子窗口不能在最前面一直在父窗口的后面。如果没有去触发JComboBox控件,则弹出的子窗口会在最...
为JTable中任意的某个单元格设置独立的JComboBox下拉框。
MyEclipse8.5中的可视化界面JTable和JComboBox应用,及常用方法。 一、可视化界面的创建 创建项目(Java):因为比较简单就不详细介绍。 创建一个可视化界面。 (1)右键src下的一个包...
判断表格中是否有控件处于编辑状态,如果有则停止 if(table.getCellEditor()!=null){ table.getCellEditor().stopCellEditing(); }
DefaultTableModel tm = (DefaultTableModel)table.getModel(); 当收到数据时: Object[] rowData = new Object[colCount]; rowData[0] = ...; rowData[1] = ...; ... ...Jtab
如同其它的Swing组件,JTable使用MVC(模型、试图、控制器)设计方式,将可视化组件(JTable实例)从其数据(TableModel实现)中分离出来。 ·TableModel接口 1、TableModel为JTable提供 ·显示的数据 ·表格的...
/** * */ package frame; import javax.swing.JFrame; import javax.swing.JScrollPane;...import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellEditor;
我们在使用表格的时候一般都是希望用它来进行数据的展示的,但是表格不仅仅可以用来进行显示数据,还可以在表格中对数据进行操作,或者在表格中添加一些其他的控件来进行一些操作 ...
在这个ListAddMainPanel中,我嵌套了一个JScrollPane类的panel_1,在这个JScrollPane里,我放置了一个Jtable,Jtable 使用了DefaultTableModel。(可能看着有点晕,其实很简单,就是下面的那个图片) 使用时,我是在...
JTable组件的使用 /** * Jtable的使用 */ package com.stuAS; import java.util.*; import javax.swing.*; public class Demo1 extends JFrame{ //rowData用来存放行数据 //columnNames存放列名 Vector ...
第一篇更新1~20题的答案解析 2019年Java面试题基础系列228道(1),快看看哪些你还不会? 第二篇更新21~50题答案解析 2019年Java面试题基础系列228道(2),查漏补缺! 第三篇更新51~95题答案解析 2019年Java...
Java学生成绩管理系统界面设计(包括登录界面及界面切换),内含学生成绩管理系统各用户应有功能模块设计。 登录界面 package Panel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event...
代码首先声明了一个接口变量columnModel,然后没定义就直接使用它的方法了。
java基础知识说明 说明 java的基础知识: 继承、接口、抽象类、泛型<T>, 字符串(普通型,增强型)、正则表达式、字符串解析、模式匹配, date类、时间输入/输出格式、 List<V>...
然后重新加载但是这样会出现一个问题ArrayIndexOutOfBoundsException这是因为移除每一行的速度非常快,这样会造成已经移除完了,但是移除每一行的循环还没有完,就会出现数组越界的问题。但是还有一种方法,简单粗暴...
JComboBox comboBox; String[] items = { "", "人民币", "美元", "日元" }; public void setJcombox() throws TCException { comboBox= new JComboBox(items); //设置下拉框大小 comboBox....
我们都知道JTable提供了columnModel可以设置指定的实现了TableCellEditor接口的控件但其实现时是整个列使用同一个cellEditor 例如combobox的celleditor就会导致整个列的combobox中的数据相同,这在条件选择时可以...
因为上一个实验需要用到Jtable,这里就顺便记录一下。 主题思想就是新建一个JFrame,然后建立一个JPanel,或者JS cScrollPanel。再建立一个JTable对象。把数据通过Vector或者Object 数组的方式传入JTable里。然后把...
我在JTable中嵌套了一个下拉列表,当我选择下拉列表中的选项时,却获取不到我选中的那个值, 比如,我选择了“血浆”,却获取不到这个值,而是返回null,但是这个JcomboBox对象能获取到,很奇怪,这是为什么呢
只设计了一部分 全部的太多了。会慢慢更新增加。...在sql server 2005新建一个名为Student的数据库,在下面新建一个名为stu的表 当然 列名你可以随便写 当然 要有个学号啊。我的修改等等都是根据学号的
notepad++是一个免费的、开放源码的文本和源代码编辑器。notepad++是用c++编程语言编写的,它以减少不必要的功能和简化过程而自豪,从而创建了一个轻便高效的文本记事本程序。实际上,这意味着高速和易访问的、用户友好的界面。 notepad++已经存在了将近20年,没有任何迹象表明它的受欢迎程度会下降。记事本绝对证明了你不需要投资在昂贵的软件来编写代码从舒适的自己的家。自己尝试一下,你就会明白为什么Notepad能坚持这么久。