Java Swing JTable 问题

界面上是上面一个JTable,下面一个删除按钮,当摁下删除按钮时,如果表格选中某行,就连接服务器删除此课程,然后链接服务器刷新课程列表。可是除了第一次能得到选中JTabl... 界面上是上面一个JTable,下面一个删除按钮,当摁下删除按钮时,如果表格选中某行,就连接服务器删除此课程,然后链接服务器刷新课程列表。可是除了第一次能得到选中JTable的行外,其余时候都得到没有选中行即使界面上已经选中了,求解~
注:CourseListTable是JTable的子类
public class ITManageCourseDetailPanel extends JPanel {
private JTable course;
private JScrollPane scroll;
private Institute institute;
public ITManageCourseDetailPanel(Institute institute) {
this.institute = institute;
setSize(650, 519);
setBackground(Color.white);
setLayout(null);
// 设置院系课程列表
updateTable();
// 设置删除课程按钮
JButton delete = new JButton("删除课程");
delete.addActionListener(new DeleteListener());
// 添加
add(delete);
delete.setBounds(20, 486, 145, 25);
}
private void updateTable() {
if (scroll != null) {
remove(scroll);
}
Vector<Vector<String>> courseList = new Vector<Vector<String>>();
Vector<String> title = new Vector<String>();
title.add("课程号");
title.add("课程名称");
title.add("课程性质");
title.add("任课老师");
title.add("学分");
courseList.add(title);
courseList.add(title);
courseList.add(title);
courseList.add(title);
course = new CourseListTable(courseList);
JScrollPane scroll = new JScrollPane(course);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setBackground(Color.white);
scroll.getViewport().setBackground(Color.white);
add(scroll);
scroll.setBounds(20, 15, 600, 460);
}
class DeleteListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (course.getSelectedRow() != -1) {
String ID = course.getValueAt(course.getSelectedRow(), 0)
.toString();
// 传出删除指令
// 更新界面,得到课程列表
updateTable();
} else {
JOptionPane.showMessageDialog(null, "请选中要删除的课程!");
}
}
}
}
发现有点没说清楚
因为没有链接服务器,所以下面这部分都是伪造的数据
Vector<Vector<String>> courseList = new Vector<Vector<String>>();
Vector<String> title = new Vector<String>();
title.add("课程号");
title.add("课程名称");
title.add("课程性质");
title.add("任课老师");
title.add("学分");
courseList.add(title);
courseList.add(title);
courseList.add(title);
courseList.add(title);
完整代码有点太长了,这是我们四个人小组的软工作业。和这个界面有关的大致思想都在上面了,Institute是枚举类,可以删掉, 把CourseListTable(courseList)换成JTable(courseList,title),再把这个界面加到frame上应该就可以运行了~(当然,还要Import好多包……)
展开
 我来答
oliverpp
2013-11-30 · TA获得超过988个赞
知道小有建树答主
回答量:686
采纳率:0%
帮助的人:650万
展开全部
代码我运行出来了,问题在updateTable方法,JScrollPane scroll = new JScrollPane(course);你重新定义了scroll,算是粗心吧,造成每次判断scroll != null的时候都为false
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式