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;
}



}

...全文
99 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34103023 2016-02-28
  • 打赏
  • 举报
回复
请老师,帮忙看看。遇到细节疑难。帮帮忙
LunarCalendar返回农历(阴历)日期的JAR包 根据指定日期计算对应农历日期(这个计算方法是网上找的,最初的作者是谁已经无法考证了,感谢网络资源吧!),本人封装成好用的JAR包后发不出来,供大家免费下载! toString()方法输出阴历日期(例如:癸巳年七月廿) getFullInfo()方法输出包括生肖在内的阴历日期(例如:癸巳年七月廿,生肖:蛇) 构建方法包括以下四种: public LunarCalendar(String year, String month, String date) public LunarCalendar(JComboBox jcYear, JComboBox jcMonth, JComboBox jcDate) public LunarCalendar(int year, int month, int date) public LunarCalendar(Calendar cal)) 使用种构建方法时,若文本内容不为数字,getErrorMessage会返回错误信息 方法摘要 java.lang.String getErrorMessage() 返回String类型的错误信息 java.lang.String getFullInfo() 返回String类型的详细阴历信息(例如:癸巳年七月廿,生肖:蛇) java.lang.String getLunarAnimal() 返回String类型的生肖(例如:蛇) java.lang.String getLunarDate() 返回String类型的阴历日期(例如:廿) java.lang.String getLunarMonth() 返回String类型的阴历月份(例如:七) java.lang.String getLunarYear() 返回String类型的阴历年份(天干地支,例如:癸巳) java.lang.String toString() 返回String类型的阴历日期(例如:癸巳年七月廿) JAR包名称:LunarCalendar version 1.0 8/26/2013 作者:Roy, Liu royliu90@live.cn

23,405

社区成员

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

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