JTable里怎么监听调整Column宽度的事件。

kofight 2003-04-23 06:16:09
我这有两个表,上下排列着,要求上面的列宽度变化时,下面的宽度也跟着变,和上面的对齐。
...全文
65 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazyboy123 2003-04-24
  • 打赏
  • 举报
回复
我写的一个简单的小例子

————————————————————————————————————————
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class Frame1 extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JScrollPane jScrollPane2 = new JScrollPane();
Object[][] tabledata = {{"1","2","3"},
{"1","2","3"}
};
Object[] headdata = {"a","b","c"};
DefaultTableModel model1 = new DefaultTableModel();
DefaultTableModel model2 = new DefaultTableModel();
JTable jTable1 = new JTable(model1);
JTable jTable2 = new JTable(model2);

/**Construct the frame*/
public Frame1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
/**Component initialization*/
private void jbInit() throws Exception {
//setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResource("[Your Icon]")));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("Frame Title");
jScrollPane1.setPreferredSize(new Dimension(4, 150));
contentPane.add(jScrollPane1, BorderLayout.NORTH);
jScrollPane1.getViewport().add(jTable1, null);
contentPane.add(jScrollPane2, BorderLayout.CENTER);
jScrollPane2.getViewport().add(jTable2, null);
model1.setDataVector(tabledata,headdata);
model2.setDataVector(tabledata,headdata);
JTableHeader head1=jTable1.getTableHeader();
head1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter(){
public void mouseDragged(MouseEvent e) {
head_dragger();
}
});
}
/**Overridden so we can exit when window is closed*/
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
public void head_dragger(){
TableColumn tablecolumn ;
for(int i=0;i<jTable1.getColumnModel().getColumnCount();i++){
tablecolumn = jTable2.getColumnModel().getColumn(i);
int W = jTable1.getColumnModel().getColumn(i).getWidth();
tablecolumn.setWidth(W);
tablecolumn.setPreferredWidth(W);
}
}
}
Yonee 2003-04-24
  • 打赏
  • 举报
回复
看错了,不好意思

public class MyTableColumnModelListener implements TableColumnModelListener {
JTable table;

public MyTableColumnModelListener(JTable table) {
this.table = table;
}

public void columnAdded(TableColumnModelEvent e) {
}

public void columnRemoved(TableColumnModelEvent e) {
}

public void columnMoved(TableColumnModelEvent e) {
}

public void columnMarginChanged(ChangeEvent e) {
//加这里
}

public void columnSelectionChanged(ListSelectionEvent e) {
}
}

litsnake1 2003-04-24
  • 打赏
  • 举报
回复
帮你up
Yonee 2003-04-24
  • 打赏
  • 举报
回复
//关闭自动模式
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

//改变宽度
int vColIndex = 0;
TableColumn col = table.getColumnModel().getColumn(vColIndex);
int width = 100;
col.setPreferredWidth(width);
kofight 2003-04-24
  • 打赏
  • 举报
回复
谁知道啊?急

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧