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



}

...全文
157 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34103023 2016-02-28
  • 打赏
  • 举报
回复
请老师,帮忙看看。遇到细节疑难。帮帮忙
源码链接: https://pan.quark.cn/s/0f7c75cb3aad ### MIPI Video Mode 与 Command Mode 的差异 #### 一、引言 MIPI (Mobile Industry Processor Interface) 是一种用于连接移动设备中处理器及其外围设备的标准化接口。MIPI 接口支持多种协议,其中包含 DSI (Display Serial Interface) 和 DCS (Display Control Interface) 等协议。在 MIPI 接口的应用中,主要涉及工作模式:Video Mode(视频模式)和 Command Mode(命令模式)。本文旨在系统性地阐述这种模式的工作机制、特性以及实际应用环境。 #### 二、LCD RAM 概念说明 在进一步探讨 MIPI 的种模式之前,有必要对文中提及的“LCD RAM”概念进行明确。实际上,“LCD RAM”并非一个通用术语,而是本文作者用来描述 LCD 控制器中用于存储显示数据的内存区域。LCD(Liquid Crystal Display,液晶显示屏)通常配备一个控制 IC(Integrated Circuit,集成电路),该控制 IC 可能内置 RAM 以缓存显示数据。 #### 三、MIPI Video Mode(视频模式) **定义:** - 视频模式是一种类似于传统 RGB 接口的工作模式,它要求主机持续不断地向显示器传输刷新数据。 - 在这种模式下,数据和控制信号以报文的形式通过 MIPI 总线进行传输。 - 显示器本身无需配备帧缓冲器,因为主机会周期性地刷新屏幕。 **特点:** 1. **实时性高:** 主机需要不...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在电磁模拟技术中,CST(Computer Simulation Technology)是一种被广泛采纳的软件工具,它主要用于电磁场、微波、天线以及射频系统的设计工作。本资料将详细分析CST软件中离散端口的具体配置方法,这些方法对于提升仿真结果的精确度和专业水准具有决定性作用。离散端口在CST软件中扮演着模拟信号输入或输出的重要角色,它们构成了仿真模型不可或缺的部分。在配置离散端口时,一个核心的原则是保证端口的方向与网格线保持一致,这是因为这样做能够有效降低计算过程中产生的误差,并确保仿真数据的有效性。如果未能遵循这一指导原则,可能会引发未知的计算问题,进而导致仿真结果失去可靠性。 在CST软件中配置离散端口,通常需要借助“Pick Points”这一功能。通过选择“Pick Edge Center”选项,端口将被设定在模型边缘的中心位置上。然而,这种做法并不总是能够确保端口与网格线保持平行。在某些特定情形下,模型的几何构造可能不允许直接选取一个与网格线平行的边作为端口的安装位置。 为了克服这一挑战,可以采用多种不同的策略。如果模型本身已经包含一条与馈电口平行的边,那么可以直接利用这条边来建立端口,此时CST软件会自动调整端口使其与网格线对齐。另一种可选的方法是,当模型不具备现成的平行边时,用户可以手动构建一个几何结构,比如一个立方体,并使其边缘与馈电口平行。通过这种方式,新建立的几何结构的边缘就可以作为端口的位置,从而确保端口与网格线的平行关系。 在实施上述操作时,必须关注端口尺寸的合理性和物理意义的一致性。端口的尺寸应当依据实际天线馈电部分的尺寸进行适当调整,过大的端口或...

23,404

社区成员

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

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