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

在不先单击的情况下获取要在JTable中显示的JComboBox

,可以通过自定义TableCellRenderer来实现。

首先,创建一个自定义的TableCellRenderer类,继承DefaultTableCellRenderer,并重写getTableCellRendererComponent方法。在该方法中,根据需要在JTable中显示的数据类型,返回相应的组件,这里是JComboBox。

代码语言:java
复制
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;

public class ComboBoxTableCellRenderer extends DefaultTableCellRenderer {
    private JComboBox comboBox;

    public ComboBoxTableCellRenderer(JComboBox comboBox) {
        this.comboBox = comboBox;
    }

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

然后,在创建JTable时,将需要显示JComboBox的列设置为使用自定义的TableCellRenderer。

代码语言:java
复制
JTable table = new JTable(data, columnNames);
TableColumn comboBoxColumn = table.getColumnModel().getColumn(columnIndex);
comboBoxColumn.setCellRenderer(new ComboBoxTableCellRenderer(comboBox));

其中,data是JTable的数据模型,columnNames是列名数组,columnIndex是需要显示JComboBox的列的索引。

这样,在JTable中,对应的列将以JComboBox的形式显示数据,而不需要先单击。

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

相关·内容

  • JavaSwing_8.1:焦点事件及其监听器 - FocusEvent、FocusListener

    低级别事件指示Component已获得或失去输入焦点。 由组件生成此低级别事件(如一个TextField)。 该事件被传递给每一个FocusListener或FocusAdapter注册,以接收使用组件的此类事件对象addFocusListener方法。 ( FocusAdapter对象实现FocusListener接口。)每个此类侦听器对象获取此FocusEvent当事件发生时。 有两个焦点事件级别:持久性和暂时性的。 永久焦点改变事件发生时焦点直接移动从一个组件到另一个,例如通过到requestFocus的(呼叫)或作为用户使用TAB键遍历组件。 当暂时丢失焦点的组件的另一个操作,比如释放Window或拖动滚动条的间接结果一时焦点变化的事件发生。 在这种情况下,原来的聚焦状态将被自动一旦操作完成恢复,或者,对于窗口失活的情况下,当窗口被重新激活。 永久和临时焦点事件使用FOCUS_GAINED和FOCUS_LOST事件id传递; 水平可以使用isTemporary()方法的事件区分开来。 如果未指定的行为将导致的id任何特定的参数FocusEvent实例不是从范围FOCUS_FIRST到FOCUS_LAST

    01

    jTable插件辅助资料

    ==============================================jTable插件================================================ 【】引入jtable <link rel="stylesheet" type="text/css" href="../jtable/themes/lightcolor/blue/jtable.min.css" /> <script type="text/javascript" src="../jtable/jquery.jtable.min.js"></script> <script type="text/javascript" src="../jtable/localization/jquery.jtable.zh-CN.js"></script> 注:jTable插件需要jquery UI插件。之前要引入jQuery和jQueryUI 【】Servlet生成JSON结果 collegeList=collegeBusiness.getListByAll(); //定义数据返回JSON map Map<String, Object> jsonMap = new HashMap<String, Object>(); jsonMap.put("Result", "OK"); jsonMap.put("Records", collegeList); JSONObject result=JSONObject.fromObject(jsonMap); HttpServletResponse response=ServletActionContext.getResponse(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter out=response.getWriter(); out.println(result.toString()); out.flush(); out.close(); 【】jtable要求的返回格式 {  "Result":"OK",  "Records":[   {"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":2,"Name":"Douglas Adams","Age":42,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":3,"Name":"Isaac Asimov","Age":26,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":4,"Name":"Thomas More","Age":65,"RecordDate":"\/Date(1320259705710)\/"}  ] } 【】当出现异常后的jTable要求的结果 {    "Result":"ERROR",    "Message":"异常信息字符串" } 【】jTable的语法  $('#MyTableContainer').jtable({             //General options comes here             actions: {                 //Action definitions comes here             },             fields: {                 //Field definitions comes here             }             //Event handlers... });      【】jtable初始化 1.定义jTable显示的区域div

    2.在JS中初始化jTable //定义部门表格 $('div#departmentmaincontent').jtable({            title: '部门列表',            selecting: true, //Enable selecting            multiselect: false, //not Allow mu

    04

    图书管理系统 出现的问题

    JButton button_ok = new JButton("确定",new ImageIcon("ok.png")); southPanel.add(button_ok); button_ok.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { File f1 =SearchFrame.this.getClassName(); File[] f = f1.listFiles(); try { FileInputStream fr = new FileInputStream(f[0]); ObjectInputStream obo = new ObjectInputStream(fr); boolean exist = false;//用来判断有没有查到 do{ book_search =(Book)obo.readObject(); System.out.println(book_search); if(book_search.toString().contains(textField.getText())) { exist =true; Object[][] book=new Object[1][]; book[0][0]=book_search.getNumber(); book[0][1]=book_search.getName(); book[0][2]=book_search.getAuthor(); book[0][3]=book_search.getPress(); book[0][4]=book_search.getCount(); String [] book_info = {"编号","书名 ","作者","出版社","数量"}; table_search = new JTable(book,book_info); new SearchResult(); } }while(book_search==null); //当没有检索到书的时候显示结果 if(!exist){ JLabel label_result = new JLabel("没有检索到该书!!"); JOptionPane.showConfirmDialog(SearchFrame.this, label_result,"图书管理系统检索结果", JOptionPane.PLAIN_MESSAGE,JOptionPane.OK_OPTION , new ImageIcon("result.png")); } obo.close(); }catch(InvalidClassException e3) { e3.printStackTrace(); } catch (ClassNotFoundException e1) { e1.printStackTrace(); }catch(StreamCorruptedException e4){ e4.printStackTrace(); }catch(OptionalDataException e5) { e5.printStackTrace(); }catch(FileNotFoundException e6) { } catch (IOException e2) { e2.printStackTrace(); } } });

    04
    领券