Swing 表头第一列不可拖动

问题描述

只允许表头第一列或者某一列不可拖动,其他列可以拖动,请问怎么实现?JTable的所有列是默认可以拖动的,JTableHeadertableHeader=JTable.getTableHeader();tableHeader.setReorderingAllowed(false);//表示所有的列都不可以拖动

解决方案

解决方案二:
一般是两个table拼接而成
解决方案三:
不动的这一列一般是ID这种字段,如果用两个table的话,数据模型实现的数据可能会不同步.
解决方案四:
你难道不会手动编码让它们数据同步吗?据我所知,所谓锁定列这种ui都是拼接的
解决方案五:
你说的编码我没有试过,应该可以吧,想问你一个问题,怎么在一个JScrollpane中添加两个JTable?
解决方案六:
该回复于2011-01-29 08:46:37被版主删除
解决方案七:
那像你所说的,用一个JScrollPane将两个JTable包含起来,然后还可以将第二个JTable可以拖动,这怎么实现呢?但是JScrollPane可以加两个JTable吗?不可以吧
解决方案八:
看看是不是你要的packagecom.test;importjava.awt.BorderLayout;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Arrays;importjava.util.Vector;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JViewport;importjavax.swing.table.DefaultTableColumnModel;importjavax.swing.table.DefaultTableModel;importjavax.swing.table.TableColumn;importjavax.swing.table.TableColumnModel;publicclassTestTableextendsJFrame{privatestaticfinallongserialVersionUID=-3606700961317828681L;privateJTablerowHeaderTable=null;privateDefaultTableModelrowHeaderTableModel=null;privateJTabletable=null;privateDefaultTableModeltableModel=null;publicTestTable(){super("Test");init();}privatevoidinit(){this.getContentPane().setLayout(newBorderLayout());this.getContentPane().add(getCenterPanel(),BorderLayout.CENTER);this.getContentPane().add(getSouthPanel(),BorderLayout.SOUTH);this.pack();this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}privateJPanelgetSouthPanel(){JPanelpanel=newJPanel();panel.setLayout(newFlowLayout(FlowLayout.CENTER));JButtonaddBtn=newJButton("Add");addBtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){addCaseRow();}});JButtondelBtn=newJButton("Delete");delBtn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){removeCaseRows(table.getSelectedRows());}});panel.add(addBtn);panel.add(delBtn);returnpanel;}privateJScrollPanegetCenterPanel(){rowHeaderTable=newJTable(getRowHeaderTableModel(),getRowHeaderTableColumnModel());rowHeaderTable.getTableHeader().setReorderingAllowed(false);rowHeaderTable.setColumnSelectionAllowed(false);rowHeaderTable.getTableHeader().setReorderingAllowed(false);rowHeaderTable.getTableHeader().setResizingAllowed(false);rowHeaderTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);rowHeaderTable.setEnabled(false);JViewportjv=newJViewport();jv.setView(rowHeaderTable);intheight=newDouble(rowHeaderTable.getMaximumSize().getHeight()).intValue();jv.setPreferredSize(newDimension(50,height));JScrollPanescrollPanel_main=newJScrollPane();table=newJTable(getTableModel(),getTableColumnModel());table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);scrollPanel_main.getViewport().add(table);scrollPanel_main.setRowHeader(jv);scrollPanel_main.setCorner(JScrollPane.UPPER_LEFT_CORNER,rowHeaderTable.getTableHeader());returnscrollPanel_main;}privateDefaultTableModelgetRowHeaderTableModel(){rowHeaderTableModel=newDefaultTableModel(0,1){privatestaticfinallongserialVersionUID=1986093475481012619L;publicbooleanisCellEditable(introw,intcolumn){returnfalse;}};returnrowHeaderTableModel;}privateDefaultTableModelgetTableModel(){tableModel=newDefaultTableModel(0,2){privatestaticfinallongserialVersionUID=3325101167983738710L;publicbooleanisCellEditable(introw,intcolumn){returntrue;}};returntableModel;}privateTableColumnModelgetTableColumnModel(){TableColumnModelcolumnModel=newDefaultTableColumnModel();for(inti=0;i<2;i++){columnModel.addColumn(getTableColumns()[i]);}returncolumnModel;}privateTableColumn[]getTableColumns(){TableColumn[]tableColumns=newTableColumn[2];tableColumns[0]=newTableColumn(0,200,null,null);tableColumns[0].setHeaderValue("Test1");tableColumns[1]=newTableColumn(1,200,null,null);tableColumns[1].setHeaderValue("Test2");returntableColumns;}privateTableColumnModelgetRowHeaderTableColumnModel(){DefaultTableColumnModelrowHeaderColumnModel=newDefaultTableColumnModel();rowHeaderColumnModel.addColumn(getRowNumberColumn());returnrowHeaderColumnModel;}privateTableColumngetRowNumberColumn(){TableColumnrowNumberColumn=newTableColumn(0,50,null,null);rowNumberColumn.setHeaderValue("ID");returnrowNumberColumn;}privatevoidaddCaseRow(){introwId=tableModel.getRowCount()+1;Vector<String>headerVC=newVector<String>();headerVC.add(String.valueOf(rowId));Vector<String>dataVC=newVector<String>();dataVC.add("Test1:"+String.valueOf(rowId));dataVC.add("Test2:"+String.valueOf(rowId));rowHeaderTableModel.addRow(headerVC);tableModel.addRow(dataVC);}privatevoidremoveCaseRows(int[]rowIndex){if(rowIndex.length>0){Arrays.sort(rowIndex);for(inti=rowIndex.length-1;i>=0;i--){tableModel.removeRow(rowIndex[i]);rowHeaderTableModel.removeRow(rowIndex[i]);}}updateRowHeader();}privatevoidupdateRowHeader(){for(inti=0;i<rowHeaderTableModel.getRowCount();i++){rowHeaderTableModel.setValueAt(i+1,i,0);}}publicstaticvoidmain(String[]args){newTestTable();}}

解决方案九:
你说的是jtable的前面几列的冻结,具体的没有做过,不过你可以试试jctable,jctable这边设置挺简单的。

时间: 2024-10-07 14:12:42

Swing 表头第一列不可拖动的相关文章

swing jtble 一览中选中时 第一列三角号

问题描述 1>一览中选中行的时候,第一列有个三角号,不选中的时候没有三角号2>一览中,头部列只有一列,下面显示数据的列是两列.

Excel中完美冻结第一行、第一列的技巧

第一步:在Excel中,单击选中"B2"单击格,执行"窗口"→"拆分"命令(如图1),接下来便会出现图2所示的效果,如果没有出现图2所示效果则说明窗口拆分未成功. 第二步:单击选中最左上角的"A1"单元格,执行"窗口"→"冻结窗格"命令(如图3). 这时就完美的实现了冻结第一行.第一列的效果了(如图4).对于一些数据较多的表格,需要固定表头或者第一列,冻结后查看就方便多了.你也遇到了秀秀

如何实现可变顺序表头左右列的变换(安统计数排左右表列)

问题描述 表1编号产品名1HPT2HPA3HCD4AC表二日期数量产品2015-1-210HPA2015-1-26HPT2015-1-37HCD2015-1-33HPT2015-1-320AC2015-1-35HPA2015-1-410HPA显示效果查询条件查一天日期从[2014-1-2]到[2014-1-2]得下表并显示日期HPAHPTHCDAC合计2014-1-21060016合计1060016查询条件查几天日期从[2014-1-2]到[2014-1-4]日期HPAACHPTHCD合计201

冻结Silverlight Datagrid的第一列

    今天同事在做Silverlight的项目时有这样一个需求:在拖动横向的滚动条时需要固定第一列,好奇也在网上搜了下,果然有个FrozenColumnCount属性:用来设置冻结列的数量.设置成FrozenColumnCount="1"就刚好冻结第一列.如果你要实现冻结某列,可以参考这里(TerryLee).特记录下来以备以后有需要用.

利用importtsv导入数据到hbase。假如数据第一列不是唯一怎么办

问题描述 利用importtsv导入数据到hbase.假如数据第一列不是唯一怎么办 利用importtsv导入数据,假如数据文件里第一列不是唯一的,请问怎么导入?可以指定主键吗?比如指定主键是两个字段相加 解决方案 可以使用HBASE_ROWKEY关键字指定主键

jtable显示数据库中的数据,为什么数据显示不完全,第一列列名也没有

问题描述 jtable显示数据库中的数据,为什么数据显示不完全,第一列列名也没有 10C 解决方案 用JTable显示数据库数据将数据库中的数据显示到JTable上将Excel中的数据在JTable中显示 解决方案二: 你for循环写的从1开始的..

ORA FAQ 性能调整系列之——当索引第一列由序列产生,一个逆序索引有什么用?

索引|性能 ORA FAQ 性能调整系列之--The Oracle (tm) Users' Co-Operative FAQWhy would a reverse index be useful when the leading column of the index is generated from a sequence ?当索引第一列由序列产生,一个逆序索引有什么用?--------------------------------------------------------------

winform-用C#listview控件Details类型,发现当拉动表头调整列宽度过程时,listview会

问题描述 用C#listview控件Details类型,发现当拉动表头调整列宽度过程时,listview会 用C#listview控件Details类型,发现当拉动表头调整列宽度过程时,listview会重画,造成不停的闪烁.有什么方法让它在宽度调整完后之后,listview才重画

基于jquery的固定表头和列头的代码_jquery

复制代码 代码如下: <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script> <script type="text/javascript">// <![CDATA[ function FixTable(TableID, FixColumnNumber, width, height)