当前位置:编程学习 > JAVA >>

j2se关于JComboBox控件的下拉列表刷新问题


在进行增删改之后,按下刷新按钮,JTable中的数据更新,但两个JComboBox下拉列表的值却不更新
,求指导,代码如下:(精简后代码,红色部分相关代码)

public class customer extends JFrame implements ActionListener, MouseListener {


Vector vec1 = new Vector();
Vector vec2 = new Vector();
/**
 * start 操作控件
 */
JButton add = new JButton("添加");
JButton delete = new JButton("删除");
JButton modify = new JButton("修改");


/**
 * start 查询控件
 */
JLabel su_no = new JLabel("客户编号");
JLabel su_name = new JLabel("客户简称");


JComboBox jc_no = null;
JComboBox jc_name = null;
JButton select = new JButton("查询");
JButton refresh = new JButton("刷新");





customer() {
super("客户信息管理");
searchEmp_jc_name(1, 100);
searchEmp_jc_no(1, 100);
jc_no = new JComboBox(vec1);
jc_name = new JComboBox(vec2);
addaction();
CreatJFrame();
Select();

searchEmp(1, 100);

}

private void CreatJFrame() {
//布局代码,省略
}

void Select() {
//布局代码,省略
}

private void searchEmp(int start, int end) {
//查询数据库中的数据,并在JTable上显示,省略
}

private void searchEmp_act(int start, String end) {
//查询数据库中的数据,并在JTable上显示,省略
}



private void searchEmp_jc_no(int start, int end) {
Connection conn = null;
PreparedStatement sta = null;
ResultSet rs = null;
try {
conn = DBmanager.getConnection();
StringBuffer sbf = new StringBuffer();
sbf.append("select khid from (");
sbf
.append("select temp.* , ROWNUM RN from ( (select * from 客户信息 order by khid) temp)");
sbf.append(" WHERE ROWNUM <= ?");
sbf.append(")");
sbf.append("where RN >=?");
sta = conn.prepareStatement(sbf.toString());
sta.setInt(1, end);
sta.setInt(2, start);
rs = sta.executeQuery();
vec1 = rs2Vector_jc_no(rs);
// System.out.println(vec1);
// jc_no.setModel(vec1);
} catch (Exception e) {
e.printStackTrace();
} finally {
DBmanager.closeConnection(conn);
DBmanager.closePreparedStatement(sta);
DBmanager.closeResultSet(rs);
}
}

private void searchEmp_jc_name(int start, int end) {
Connection conn = null;
PreparedStatement sta = null;
ResultSet rs = null;
try {
conn = DBmanager.getConnection();
StringBuffer sbf = new StringBuffer();
sbf.append("select gyshjch from (");
sbf
.append("select temp.* , ROWNUM RN from ( (select * from 客户信息 order by khid) temp)");
sbf.append(" WHERE ROWNUM <= ?");
sbf.append(")");
sbf.append("where RN >=?");
sta = conn.prepareStatement(sbf.toString());
sta.setInt(1, end);
sta.setInt(2, start);
rs = sta.executeQuery();
vec2 = rs2Vector_jc_name(rs);
vec2.add("  ");
// System.out.println(vec2);
} catch (Exception e) {
e.printStackTrace();
} finally {
DBmanager.closeConnection(conn);
DBmanager.closePreparedStatement(sta);
DBmanager.closeResultSet(rs);
}
}



private Vector<Vector> rs2Vector_jc_no(ResultSet rs) {
// 外层的vector,每一个元素是一条记录
Vector vector = new Vector();
try {
while (rs.next()) {
// 里面的vector,放的是列的值
vector.add(rs.getString("khid"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return vector;

}

private Vector<Vector> rs2Vector_jc_name(ResultSet rs) {
// 外层的vector,每一个元素是一条记录
Vector vector = new Vector();
try {
while (rs.next()) {
// 里面的vector,放的是列的值
vector.add(rs.getString("gyshjch"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return vector;

}

private void addaction() {

//添加监听,省略
}

private void searchEmp_act_delete(int start) {
//删除数据库中的数据,省略
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

if (e.getSource().equals(select)) {
//点击查询,省略

}
if (e.getSource().equals(add)) {
//点击添加,省略
}
if (e.getSource().equals(refresh)) {

//点击刷新
 searchEmp(1, 100);
 searchEmp_jc_name(1, 100);
 searchEmp_jc_no(1, 100);
 jc_no = new JComboBox(vec1);
 jc_name = new JComboBox(vec2);

}
if (e.getSource().equals(modify)) {
//点击修改,省略
}
if (e.getSource().equals(delete)) {
//点击删除,省略
}

public static void main(String[] args) {
customer cu = new customer();
}



} java   JComboBox   --------------------编程问答-------------------- 没有人吗????? --------------------编程问答-------------------- 试试加上revalidate()和repaint()吧 --------------------编程问答-------------------- 如果都是从数据库里读取的,不会不更新的。debug看下就行了。 --------------------编程问答--------------------
引用 2 楼 Cecil_911 的回复:
试试加上revalidate()和repaint()吧

能详细点说明吗,谢谢了 --------------------编程问答--------------------
引用 3 楼 fangmingshijie 的回复:
如果都是从数据库里读取的,不会不更新的。debug看下就行了。

不是很懂,什么意思啊 --------------------编程问答-------------------- 下拉列表里面的值是从数据库中读取,放进去的吗? --------------------编程问答--------------------
引用 6 楼 fangmingshijie 的回复:
下拉列表里面的值是从数据库中读取,放进去的吗?

嗯,是的 --------------------编程问答-------------------- 你是想刷新的时候,让下拉框显示第一个值?
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,