首先实现TableModelListener(其实什么事也不用做,但是只有这样 JTable的数据显示才会更新)
class UserTableModelListener implements TableModelListener { public UserTableModelListener() {
} public void tableChanged(TableModelEvent e) {
}
}然后继承DefaultTableModel,让JTable不能编辑.
class UserTableModel extends DefaultTableModel {
public CustomTableModel(Object[][] data, Object[] colname) {
super(data, colname);
} public boolean isCellEditable(int x, int y) {
return false;
} public void addTableModelListener(UserTableModelListener l) {
super.addTableModelListener(l);
}
}这是你的frame
public class YourApp extends JFrame
{
JTable ltable = null;
JTable rtable = null;
UserTableModel lmodel = null;
UserTableModel rmodel = null; public YourApp() {
try {
yourInit();
}
catch(Exception e) {
e.printStackTrace();
}
} private void yourInit() throws Exception {
Object[][] yourdata = yourdata;
Object[][] zerodata = new Object[0][0];
Object[] yourcolname = yourcolname;
lmodel = new UserTableModel(yourdata, yourcolname);
rmodel = new UserTableModel(zerodata, yourcolname);
ltable = new JTable(lmodel);
rtable = new JTable(rmmodel);
lmodel.addTableModelListener(new UserTableModelListener());
rmodel.addTableModelListener(new UserTableModelListener()); JButton add = new JButton("add");
add.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
actionPerformed(e);
}
});
} void actionPerformed(ActionEvent e) {
int row = ltable.getSelectedRow();
String[] data = new String[1];
data[0] = (String)ltable.getValueAt(row, 0);
lmodel.removeRow(row);
rmodel.addRow(data);
}
}
class UserTableModelListener implements TableModelListener { public UserTableModelListener() {
} public void tableChanged(TableModelEvent e) {
}
}然后继承DefaultTableModel,让JTable不能编辑.
class UserTableModel extends DefaultTableModel {
public CustomTableModel(Object[][] data, Object[] colname) {
super(data, colname);
} public boolean isCellEditable(int x, int y) {
return false;
} public void addTableModelListener(UserTableModelListener l) {
super.addTableModelListener(l);
}
}这是你的frame
public class YourApp extends JFrame
{
JTable ltable = null;
JTable rtable = null;
UserTableModel lmodel = null;
UserTableModel rmodel = null; public YourApp() {
try {
yourInit();
}
catch(Exception e) {
e.printStackTrace();
}
} private void yourInit() throws Exception {
Object[][] yourdata = yourdata;
Object[][] zerodata = new Object[0][0];
Object[] yourcolname = yourcolname;
lmodel = new UserTableModel(yourdata, yourcolname);
rmodel = new UserTableModel(zerodata, yourcolname);
ltable = new JTable(lmodel);
rtable = new JTable(rmmodel);
lmodel.addTableModelListener(new UserTableModelListener());
rmodel.addTableModelListener(new UserTableModelListener()); JButton add = new JButton("add");
add.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
actionPerformed(e);
}
});
} void actionPerformed(ActionEvent e) {
int row = ltable.getSelectedRow();
String[] data = new String[1];
data[0] = (String)ltable.getValueAt(row, 0);
lmodel.removeRow(row);
rmodel.addRow(data);
}
}
左边的jtable,当你选中的时候,你能得到所有被选中的行(所以可以几行一起到右边的jtable),
来个循环,取的所有的行号及值(不要怀疑,我都做过),同时右边的jtable插入行,行的值就是你从左边取出来的值。
呵呵,以你的功底一定很容易的。
实在抱歉,编译花了不少时间,实在是我蠢,怎么也不成功.请问DefaultTableModel是什么,我查javaAPI,查不到.以下是出错的地点和内容:
class UserTableModel extends DefaultTableModel {"YourApp.java": Error #: 300 : class DefaultTableModel not found in class dbdump.UserTableModel at line 26, column 32
然后继承DefaultTableModel,让JTable不能编辑.
class UserTableModel extends DefaultTableModel {
~~~~~~~~~~~~~~
public CustomTableModel(Object[][] data, Object[] colname) {
~~~~~~~~~~~~~~~~
super(data, colname);
} public boolean isCellEditable(int x, int y) {
return false;
} public void addTableModelListener(UserTableModelListener l) {
super.addTableModelListener(l);
} }类名和构造函数名不一样,是不是这个问题!?
to panq: import javax.swing.table.DefaultTableModel;
也感谢一切gz的朋友,一概有分.
以下是我的调试程序.
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;class UserTableModelListener implements TableModelListener { public UserTableModelListener() {
} public void tableChanged(TableModelEvent e) {
}
}//然后继承DefaultTableModel,让JTable不能编辑.
class UserTableModel extends DefaultTableModel {
public UserTableModel(Object[][] data, Object[] colname) {
super(data, colname);
} public boolean isCellEditable(int x, int y) {
return false;
} public void addTableModelListener(UserTableModelListener l) {
super.addTableModelListener(l);
}
}//这是你的frame
public class YourApp extends JFrame
{
JTable ltable = null;
JTable rtable = null;
UserTableModel lmodel = null;
UserTableModel rmodel = null; public YourApp() {
try {
yourInit();
}
catch(Exception e) {
e.printStackTrace();
}
} private void yourInit() throws Exception {
Object[][] yourdata = {{"one"},{"two"},{"third"},{"four"},{"five"},{"six"},{"OIUDSF"},{"SDFSD"},{"SDFSD"},{"SDF"},{"panq"}};
Object[][] zerodata = new Object[0][0];
Object[] yourcolname = {"Table Name"};
lmodel = new UserTableModel(yourdata, yourcolname);
rmodel = new UserTableModel(zerodata, yourcolname);
ltable = new JTable(lmodel);
rtable = new JTable(rmodel); JPanel contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(new FlowLayout()); lmodel.addTableModelListener(new UserTableModelListener());
rmodel.addTableModelListener(new UserTableModelListener()); JButton add = new JButton("add");
add.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
add_actionPerformed(e);
}
}); contentPane.add(ltable);
contentPane.add(add);
contentPane.add(rtable);
} void add_actionPerformed(ActionEvent e) {
int row = ltable.getSelectedRow();
String[] data = new String[1];
data[0] = (String)ltable.getValueAt(row, 0);
lmodel.removeRow(row);
rmodel.addRow(data);
} static public void main(String[] args) {
YourApp newApp = new YourApp();
newApp.setSize(500,500);
newApp.show();
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
}}