社区
Java SE
帖子详情
JTable的问题
panq
2001-09-21 10:06:50
想用两个JTable,都是列是一位的,中间有一个button,左边的JTable内已经有数据,且不能更改,右边的JTable各行为空,选中左边JTable中的一个record,点击中间的button,能够在右边JTable中出现该record。
各位大虾,这该如何做,给出思路和代码都好。
...全文
270
14
打赏
收藏
JTable的问题
想用两个JTable,都是列是一位的,中间有一个button,左边的JTable内已经有数据,且不能更改,右边的JTable各行为空,选中左边JTable中的一个record,点击中间的button,能够在右边JTable中出现该record。 各位大虾,这该如何做,给出思路和代码都好。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
panq
2001-09-25
打赏
举报
回复
一切OK, 感谢lovesnoopy(洋葱头) 和rinehart(rinehart) 还有cming(白云蓝天)
也感谢一切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();
}
}
}
lovesnoopy
2001-09-24
打赏
举报
回复
sorry,原来的class叫CustomTableModel,copy后只改名,构造函数忘了改了。不好意思。
to panq: import javax.swing.table.DefaultTableModel;
wilddragon
2001-09-24
打赏
举报
回复
支持一把
rinehart
2001-09-24
打赏
举报
回复
DefaultTableModel是java 的 api!
这一段有点问题:
然后继承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);
}
}
类名和构造函数名不一样,是不是这个问题!?
lovesnoopy
2001-09-23
打赏
举报
回复
我已经写得这么详细了(除了界面布局的代码),你还想要什么思路,代码?
cming
2001-09-23
打赏
举报
回复
代码没有办法写了。说说思路好了。
左边的jtable,当你选中的时候,你能得到所有被选中的行(所以可以几行一起到右边的jtable),
来个循环,取的所有的行号及值(不要怀疑,我都做过),同时右边的jtable插入行,行的值就是你从左边取出来的值。
呵呵,以你的功底一定很容易的。
panq
2001-09-23
打赏
举报
回复
to:lovesnoopy
实在抱歉,编译花了不少时间,实在是我蠢,怎么也不成功.请问DefaultTableModel是什么,我查javaAPI,查不到.
以下是出错的地点和内容:
class UserTableModel extends DefaultTableModel {
"YourApp.java": Error #: 300 : class DefaultTableModel not found in class dbdump.UserTableModel at line 26, column 32
panq
2001-09-22
打赏
举报
回复
gz
panq
2001-09-21
打赏
举报
回复
up
lovesnoopy
2001-09-21
打赏
举报
回复
首先实现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);
}
}
Jneu
2001-09-21
打赏
举报
回复
gz
mengyou
2001-09-21
打赏
举报
回复
gz
CanFly
2001-09-21
打赏
举报
回复
gz
panq
2001-09-21
打赏
举报
回复
up
jtable
-弄了我一整天
NULL 博文链接:https://eeelin.iteye.com/blog/780136
JTable
使用
JTable
使用
JTable
使用
JTable
使用
JTable
使用
JTable
使用
JTable
动态刷新数据
JTable
动态刷新数据
JTable
动态刷新数据
JTable
动态刷新数据
JTable
动态刷新数据
JTable
JTable
的显示效果
JTable
练习例子exa
做的练习,记录下,防止忘记。mmmmmmmmmmmmm
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章