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好多包……) 展开
注: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好多包……) 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询