JComboBox使用疑难,jxl不能正常切换两工作簿.经验浅求助

qq_34103023 2016-02-27 11:57:48
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;
}



}

...全文
103 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34103023 2016-02-28
  • 打赏
  • 举报
回复
请老师,帮忙看看。遇到细节疑难。帮帮忙

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧