JComboBox使用疑难,jxl不能正常切换两工作簿.经验浅求助
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class table {
/**
*
*/
private static final long serialVersionUID = 6421922567173120170L;
public String[] modes;
public UserDefineComboBoxModel mode;
JComboBox biaoqian_ComboBox = new JComboBox();
JScrollPane scrollPane = new JScrollPane();
JPanel p1=new JPanel();
BorderLayout borderlayout=new BorderLayout();
JTable jTable=new JTable();
JScrollPane jScrollpane=new JScrollPane(jTable);
JMenuBar jMenuBar=new JMenuBar();
JMenu jMenu1=new JMenu();
JMenu jMenu2=new JMenu();
JMenuItem jMenuItem1=new JMenuItem();
JMenuItem jMenuItem2=new JMenuItem();
JFileChooser jFileChooser=new JFileChooser();
JFrame ff=new JFrame();
public table(){
try {
init();
}
catch (Exception e){
e.printStackTrace();
}
}
private void init() throws Exception{
ff.getContentPane().setLayout(borderlayout);
ff.getContentPane().add(
jScrollpane,
java.awt.BorderLayout.CENTER);
ff.add(
scrollPane,java.awt.BorderLayout.EAST);
ff.setJMenuBar(jMenuBar);
jMenu1.setText("文件");
jMenu2.setText("关于");
jMenuItem1.setText("打开文件");
jMenuItem1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jMenuItem1_actionperformed(e);
}
});
jMenuItem2.setText("退出");
jMenuItem2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jMenuItem2_actionperformed(e);
}
});
jFileChooser.setPreferredSize(new Dimension(0,0));
ff.getContentPane().add(
jFileChooser,java.awt.BorderLayout.SOUTH);
jMenuBar.add(jMenu1);
jMenuBar.add(jMenu2);
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
ff.setSize(800,600);
ff.setVisible(true);
ff.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void jMenuItem1_actionperformed(ActionEvent e){
try{
jFileChooser.setPreferredSize(new Dimension(400,300));
jFileChooser.showOpenDialog(ff);
String myFileName
=jFileChooser.getSelectedFile().getPath();
ff.setTitle(myFileName);
final java.io.File file=new java.io.File(myFileName);
final Workbook book=Workbook.getWorkbook(file);
final Sheet[] sheets = book.getSheets();
mode = new UserDefineComboBoxModel();
modes=new String[sheets.length+1];
for(int l=0;l<sheets.length;l++){
Sheet s = book.getSheet(l);
String btnName=s.getName();
modes[l]=btnName;
}
modes[sheets.length]="表标签";
mode.modes1=modes;
biaoqian_ComboBox.setModel(mode);
biaoqian_ComboBox.setSelectedIndex(sheets.length);
ff.add(biaoqian_ComboBox, BorderLayout.NORTH);
ItemListener itemListener = new ItemListener() {
public void itemStateChanged(ItemEvent e) {
JComboBox source = (JComboBox)e.getSource();
String bo =(String) biaoqian_ComboBox.getSelectedItem();
int index = source.getSelectedIndex();
if(index<sheets.length){
Sheet s1 = book.getSheet(bo);
System.out.println(book+"///////");
int column=s1.getColumns();
int rownum=s1.getRows();
TableModel dataModel=new TableModel();
dataModel.data=new Object[rownum][column];
dataModel.columnNames=new String[column];
for(int i=0;i<rownum;i++){
for(int j=0;j<column;j++){
dataModel.setValueAt(
s1.getCell(j,i).getContents(),i,j);
}}
jTable.setModel(dataModel);
jTable.setDefaultRenderer(Object.class, new duoxing_xianshi());
}
} };
ff.setVisible(true);
biaoqian_ComboBox.addItemListener(itemListener);
}
catch(IOException ioe){
ff.setTitle("文件不能打开");
}
catch(BiffException ex){
ff.setTitle("读Excel错误");
}
catch(NullPointerException npe){
ff.setTitle("没有选择文件");
}
}
public void jMenuItem2_actionperformed(ActionEvent e){
System.exit(0);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new table();
}
}
class TableModel extends AbstractTableModel{
/**
*
*/
private static final long serialVersionUID = 1108244244434180211L;
Object[][] data=null;
String[] columnNames=null;
public int getColumnCount(){
return columnNames.length;
}
public int getRowCount(){
return data.length;
}
public Object getValueAt(int row,int col){
return data[row][col];
}
public String getColumnName(int column){
return columnNames[column];
}
@SuppressWarnings("unchecked")
public Class getColumnClass(int col){
return getValueAt(0,col).getClass();
}
public void setValueAt(Object avalue,int row,int column){
data[row][column]=avalue;
}
}
class UserDefineComboBoxModel extends AbstractListModel implements ComboBoxModel{
/**
*
*/
private static final long serialVersionUID = -8965116189222595206L;
String item = null;
String[] modes1 ;
@Override
public Object getSelectedItem() {
// TODO Auto-generated method stub
return this.item;
}
@Override
public void setSelectedItem(Object item) {
// TODO Auto-generated method stub
this.item = (String)item;
}
@Override
public Object getElementAt(int index) {
// TODO Auto-generated method stub
return modes1[index++];
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return modes1.length;
}
}