public void selectName(String n)throws ClassNotFoundException{
try{
SQL="select assetid,asset_name,model,price,purchase_date,status from asset where asset_name='"+n+" '";
dc=new DbConn();
con=dc.getCon();
st=con.createStatement();
ResultSet rs=st.executeQuery(SQL);
list=new ArrayList<TCardModel>();
while(rs.next()){
tcm=new TCardModel(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getDouble(4),rs.getString(5),rs.getString(6));
list.add(tcm);
j++;
}
if(j==0){
JOptionPane.showMessageDialog(null,"相关数据不存在","error!",JOptionPane.INFORMATION_MESSAGE);
}
else{
iter=list.listIterator();
tcm=(TCardModel)iter.next();
//tcm=list.get(2);
TCard.label2.setText(tcm.getAssetid());
TCard.label4.setText(tcm.getAsset_name());
TCard.label6.setText(tcm.getModel());
TCard.label8.setText(tcm.getPrice());
TCard.label10.setText(tcm.getPurchase_date());
TCard.label12.setText(tcm.getStatus());
if(iter.hasNext())
{
System.out.println("有多条记录");
//TCard.nextbtn.setEnabled(true);
//TCard.proviousbtn.setEnabled(true);
}
}
}
catch(SQLException sqle){
System.err.println(sqle);
}
}
public void next(){
if(iter.hasNext())
{
tcm=(TCardModel)iter.next();
TCard.label2.setText(tcm.getAssetid());
TCard.label4.setText(tcm.getAsset_name());
TCard.label6.setText(tcm.getModel());
TCard.label8.setText(tcm.getPrice());
TCard.label10.setText(tcm.getPurchase_date());
TCard.label12.setText(tcm.getStatus());
}else{System.out.println("最后纪录");}
}
public void provious(){
if(iter.hasPrevious()){
tcm=(TCardModel)iter.previous();
TCard.label2.setText(tcm.getAssetid());
TCard.label4.setText(tcm.getAsset_name());
TCard.label6.setText(tcm.getModel());
TCard.label8.setText(tcm.getPrice());
TCard.label10.setText(tcm.getPurchase_date());
TCard.label12.setText(tcm.getStatus());
}
}
现在有两个按键对应这两个方法 分别实现 list内部上下滚动的功能 现在用next()能正常实现功能 但是provious却出现了问题 调用一次pro方法的时候iter.nextIndex()能改变 但是输出的信息却不变 第二次点击才会改变 谁能告诉我解决的方法 点击一次就能正常达到我想要的目的
try{
SQL="select assetid,asset_name,model,price,purchase_date,status from asset where asset_name='"+n+" '";
dc=new DbConn();
con=dc.getCon();
st=con.createStatement();
ResultSet rs=st.executeQuery(SQL);
list=new ArrayList<TCardModel>();
while(rs.next()){
tcm=new TCardModel(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getDouble(4),rs.getString(5),rs.getString(6));
list.add(tcm);
j++;
}
if(j==0){
JOptionPane.showMessageDialog(null,"相关数据不存在","error!",JOptionPane.INFORMATION_MESSAGE);
}
else{
iter=list.listIterator();
tcm=(TCardModel)iter.next();
//tcm=list.get(2);
TCard.label2.setText(tcm.getAssetid());
TCard.label4.setText(tcm.getAsset_name());
TCard.label6.setText(tcm.getModel());
TCard.label8.setText(tcm.getPrice());
TCard.label10.setText(tcm.getPurchase_date());
TCard.label12.setText(tcm.getStatus());
if(iter.hasNext())
{
System.out.println("有多条记录");
//TCard.nextbtn.setEnabled(true);
//TCard.proviousbtn.setEnabled(true);
}
}
}
catch(SQLException sqle){
System.err.println(sqle);
}
}
public void next(){
if(iter.hasNext())
{
tcm=(TCardModel)iter.next();
TCard.label2.setText(tcm.getAssetid());
TCard.label4.setText(tcm.getAsset_name());
TCard.label6.setText(tcm.getModel());
TCard.label8.setText(tcm.getPrice());
TCard.label10.setText(tcm.getPurchase_date());
TCard.label12.setText(tcm.getStatus());
}else{System.out.println("最后纪录");}
}
public void provious(){
if(iter.hasPrevious()){
tcm=(TCardModel)iter.previous();
TCard.label2.setText(tcm.getAssetid());
TCard.label4.setText(tcm.getAsset_name());
TCard.label6.setText(tcm.getModel());
TCard.label8.setText(tcm.getPrice());
TCard.label10.setText(tcm.getPurchase_date());
TCard.label12.setText(tcm.getStatus());
}
}
现在有两个按键对应这两个方法 分别实现 list内部上下滚动的功能 现在用next()能正常实现功能 但是provious却出现了问题 调用一次pro方法的时候iter.nextIndex()能改变 但是输出的信息却不变 第二次点击才会改变 谁能告诉我解决的方法 点击一次就能正常达到我想要的目的
private static final int NEXT = 1;
private static final int PREVIOUS = 2;
private int curOp_ = -1;...public void next(){
if( curOp_ == PREVIOUS ) {
iter.next();
}curOp_ = NEXT;
...
if(iter.hasNext()) {
...
}
}public void previous() {if( curOp_ == NEXT ) {
iter.previous();
}
curOp_ = PREVIOUS;
if( iter.hasPrevious() ) {
...
}
}
}