java – 关于JScrollPane中JTable的列宽度
发布时间:2020-12-15 05:16:45 所属栏目:Java 来源:网络整理
导读:我想在JScrollPane中设置一个具有固定num宽度的JTable的每一列,但我不能用infoTable.getColumnModel().getColumn(0).setPreferredWidth(10); 我使用JScrollPane的默认布局,并在j2se 1.4中添加带有scrollPane的setViewPortView(infoTable)的表. 我怎么能这样
我想在JScrollPane中设置一个具有固定num宽度的JTable的每一列,但我不能用infoTable.getColumnModel().getColumn(0).setPreferredWidth(10);
我使用JScrollPane的默认布局,并在j2se 1.4中添加带有scrollPane的setViewPortView(infoTable)的表. 我怎么能这样做? 这是我的代码 private javax.swing.JButton jButton1; private javax.swing.JScrollPane jScrollPane1; public TableFrame() { jScrollPane1 = new javax.swing.JScrollPane(); jButton1 = new javax.swing.JButton(); setDefaultCloSEOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jScrollPane1.setBorder(javax.swing.BorderFactory.createLineBorder( new java.awt.Color(0,0))); jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); this.setSize(new Dimension(600,600)); this.jScrollPane1.setSize(500,500); this.getContentPane().add(this.jScrollPane1,BorderLayout.CENTER); this.getContentPane().add(this.jButton1,BorderLayout.WEST); table = new JTable(new javax.swing.table.DefaultTableModel(100,2)); this.jScrollPane1.setViewportView(table); table.getColumnModel().getColumn(0).setWidth(10); } PS.回答的问题我需要拖动列来调整大小,所以我无法设置最大和最小尺寸 解决方法
通常,您只需要设置首选宽度.但要实现目标,首先需要知道默认宽度以及如何使用它们来确定实际的默认大小:
min = 15 preferred = 75 max = Integer.MAX_VALUE 因此,除非您也更改最小宽度,否则不能使用10. 让我们看一个简单的情况,第1列的首选宽度为25,滚动窗格为500.因此,两列的首选宽度为100(25 75).额外的400像素在两列之间均匀分配,因此列将显示在225(25 200)和275(75 200)处.因此,默认情况下,您不能仅以25像素显示第一列,除非您还将第二列设置为475. 如果您希望所有列都以其首选宽度显示,那么您需要使用: table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |