Java JTable的使用

 时间:2024-10-12 03:36:14

1、设置单元格的渲染器为复选框,如下://设置表格和表头的默认渲染器simpleTable.setDefaultRenderer(Object.class, simpleTableRender);simpleTable.getTableHeader().setDefaultRenderer(headerRenderer);//设置单元格的渲染器checkBoxRenderer = new CheckBoxRenderer(simpleTable); simpleTable.getColumnModel().getColumn(0).setCellRenderer(checkBoxRenderer);

Java JTable的使用

2、设置单元格的渲染器和编辑器为下拉框,如下:simpleTable.getColumnModel().getColumn(3).setCellRenderer(comboBoxRenderer); simpleTable.getColumnModel().getColumn(3).setCellEditor(comboBoxCellEditor);

Java JTable的使用

3、设置排序方法,如下:sorter = new TableRowSorter<LogonStatusTableModel>((LogonStatusTableModel) simpleTable.getModel());simpleTable.setRowSorter(sorter);ArrayList<SortKey> list = new ArrayList<SortKey>();list.add(new TableRowSorter.SortKey(1, SortOrder.ASCENDING));sorter.setSortKeys(list);sorter.sort();sorter.setSortable(0, false);

4、设置表头的排序标识按钮,如下:衡痕贤伎simpleTable.getTableHeader().addMouseListener(new Hea颊俄岿髭derMouseListener());class HeaderMouseListener extends MouseAdapter { @Override public void mouseClicked(MouseEvent e) { JTableHeader h = (JTableHeader) e.getSource(); TableColumnModel columnModel = h.getColumnModel(); TableCellRenderer tcr = h.getDefaultRenderer(); int viewColumn = columnModel.getColumnIndexAtX(e.getX()); if (viewColumn < 0) return; int column = columnModel.getColumn(viewColumn).getModelIndex(); if (column != -1 && tcr instanceof LogonStatusContentHeaderRenderer) { LogonStatusContentHeaderRenderer sbr = (LogonStatusContentHeaderRenderer) tcr; sbr.setSelectedColumn(column); } } @Override public void mouseReleased(MouseEvent e) { ((JTableHeader) e.getSource()).repaint(); } }

Java JTable的使用

5、设置数据返回值类型,如下://返回布尔值@Overridepublic Class<?> getColumnClass(int columnIndex) { if (columnIndex == 0) return Boolean.class; else return super.getColumnClass(columnIndex);}//返回Double类型,排序时会按Double类型排序@Overridepublic Class<?> getColumnClass(int columnIndex) { if(columnIndex==2){ return Double.class; }else return super.getColumnClass(columnIndex);}

6、设置某一列是否可以编辑,如下:public boolean isCellEditable(int row, int column) { if (row >= 0) { SysParamStruct info = localMap.get(String.valueOf(row)); if (info == null) { System.out.println("info null"); } if (info != null) { if (columnsOrder.elementAt(column) == EnumSysParaColumn.VALUE) { return true; } if (columnsOrder.elementAt(column) == EnumSysParaColumn.STATUS) { return true; } } } return false; }

7、设置列的值,如下:public Object getValueAt(int row, int column) { if (row >= 0) { SysParamStruct info = localMap.get(String.valueOf(row)); if (info == null) { System.out.println("info null"); } if (info != null) { if (columnsOrder.elementAt(column) == EnumSysParaColumn.PARA_NAME) { return info.getShortDesc(); } else if (columnsOrder.elementAt(column) == EnumSysParaColumn.PARA_DESC) { return info.getLongDesc(); } else if (columnsOrder.elementAt(column) == EnumSysParaColumn.VALUE) { return info.getValue(); } else if (columnsOrder.elementAt(column) == EnumSysParaColumn.STATUS) { return info.getStatus(); } } } return ""; }

8、使编辑的列值生效,如下:public void setValueAt (Object value巳呀屋饔, int row, int column) { SysParamStruct in熠硒勘唏fo = localMap.get(String.valueOf(row)); if (columnsOrder.elementAt(column) == EnumSysParaColumn.VALUE) { info.setValue((String) value); localMap.put(String.valueOf(row), info); } if (columnsOrder.elementAt(column) == EnumSysParaColumn.STATUS) { char status = 0; switch ((StatusType)value) { case Active : status = StatusType.Active.getValue(); break; case Suspended : status = StatusType.Suspended.getValue(); break; case Deleted : status = StatusType.Deleted.getValue(); break; default : break; } info.setStatus(status); localMap.put(String.valueOf(row), info); } fireTableCellUpdated(row, column); }

9、ComboBoxRenderer里面的内间恒溪痞容,如下:@Override public Component getTa芟鲠阻缒bleCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { oddColor = ResManager.getColor("Trade.OrderBook.TableCell.OddColor"); evenColor = ResManager.getColor("Trade.OrderBook.TableCell.EvenColor"); fgColor = ResManager.getColor("Trade.OrderBook.TableCell.textColor"); highlightBgColor = HVResMgr.getColor("Trade.OrderBook.TableCell.HighlightColor"); //set line background color if ((row % 2) == 0) { bgColor = oddColor; } else { bgColor = evenColor; } // set highlight color if (isSelected) { bgColor = highlightBgColor; } //calculate the font size double ratio = 1.0; if (table instanceof BaseTable) { ratio = ((BaseTable) table).getRatio(); } int fontSize = (int) (font.getSize() * ratio); font = new Font(font.getName(), font.getStyle(), fontSize); this.comboBox.setBorder(null); this.comboBox.setBackground(bgColor); this.comboBox.setForeground(fgColor); if (column == 3) { StatusType status = null; switch ((Character) value) { case 'A' : status = StatusType.Active; break; case 'S' : status = StatusType.Suspended; break; case 'D' : status = StatusType.Deleted; break; default : break; } this.comboBox.setSelectedItem(status); } return this.comboBox; }

10、ComboBoxCellEditor里面的内容,如下:public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (column == 3) { StatusType status = null; switch ((Character) value) { case 'A' : status = StatusType.Active; break; case 'S' : status = StatusType.Suspended; break; case 'D' : status = StatusType.Deleted; break; default : break; } this.comboBox.setSelectedItem(status); } return this.comboBox; } @Override public Object getCellEditorValue() { return this.comboBox.getSelectedItem(); }

  • matlab图形窗口菜单及对数坐标
  • 怎样使用matlab的gui做绘图界面
  • 孕妇日记:羊水少怎么办?椰子水补羊水历程
  • MATLAB如何在直角坐标下描绘曲线图
  • 圆锥曲线:MATLAB绘制抛物线方程的图像
  • 热门搜索
    数学手抄报资料 鼠年手抄报图片大全 六年级语文手抄报 无烟日手抄报 国庆节的手抄报怎么画 手抄报模板大全 关于老师的手抄报 珍爱生命预防溺水手抄报图画 快乐成长手抄报内容 英语手抄报的内容