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看下就行了。 --------------------编程问答--------------------
能详细点说明吗,谢谢了 --------------------编程问答--------------------
不是很懂,什么意思啊 --------------------编程问答-------------------- 下拉列表里面的值是从数据库中读取,放进去的吗? --------------------编程问答--------------------
嗯,是的 --------------------编程问答-------------------- 你是想刷新的时候,让下拉框显示第一个值?
补充:Java , Java SE