JComboBox使用疑难,jxl不能正常切换两工作簿.经验浅求助
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;
}
}
相关推荐
Swing 组件大全
Swing组件大全是一个深入探讨Java Swing库的资源,它涵盖了Swing提供的几乎全部组件,同时结合了数据库操作和第三方库jxl与TableLayout的使用。
【雷达信号处理】数字下变频(DDC)(Matlab代码实现)
内容概要:本文介绍了基于MATLAB的雷达信号处理中数字下变频(DDC)技术的实现方法,重点阐述了DDC在雷达接收机前端信号处理中的关键作用。通过将高频回波信号下变频至基带,便于后续进行数字化处理与目标信息提取。文中提供了完整的MATLAB代码实现,涵盖混频、低通滤波、抽取等核心步骤,帮助读者理解DDC的工作原理与工程实现细节。; 适合人群:具备一定信号与系统、数字信号处理基础知识,从事雷达、通信或电子工程相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于教学演示,加深对数字下变频原理的理解;②作为雷达或通信系统仿真项目的基础模块;③辅助科研人员快速搭建信号处理链路,进行算法验证与性能分析。; 阅读建议:建议结合数字信号处理教材中的混频、奈奎斯特采样及多速率信号处理理论进行学习,动手运行并调试代码,尝试调整参数(如本振频率、滤波器阶数、抽取因子)以观察对输出信号的影响,从而深入掌握DDC的设计要点与实际应用。
福建省福州新区矢量面数据-02坐标-geojson格式.json
福州新区区划面数据,geojson格式,02坐标
量化数据笔记第2篇:外盘期货历史高频tick数据涵盖主流交易所的活跃合约,以逐笔成交记录为主 字段通常包含品种代码、交易所、日期、精确到毫秒的时间戳、成交价格、成交量、持仓量变化,以及盘口买卖一档挂单
量化数据笔记第2篇:外盘期货历史高频tick数据涵盖主流交易所的活跃合约,以逐笔成交记录为主。字段通常包含品种代码、交易所、日期、精确到毫秒的时间戳、成交价格、成交量、持仓量变化,以及盘口买卖一档挂单价与挂单量。数据保留了原始行情序列,反映微观价格变动与流动性瞬时变化。 数据源:CMES金融数据库
【多机器人路径规划】基于优先级规划与Petri网融合的多机器人路径规划框架研究(Matlab代码实现)
内容概要:本文提出了一种基于优先级规划与Petri网融合的多机器人路径规划框架,旨在解决多机器人系统在共享环境中进行路径规划时可能出现的冲突与死锁问题。该方法结合了优先级规划的高效性与Petri网在建模并发与冲突方面的优势,通过建立形式化的Petri网模型对机器人运动状态进行精确描述,并引入优先级机制动态调整路径执行顺序,从而实现无冲突、无死锁的安全路径规划。研究通过Matlab代码实现了算法仿真,验证了该框架在复杂网格环境下的可行性与有效性,能够有效提升多机器人系统的运行效率与安全性。 适合人群:具备一定自动化、机器人或控制理论基础的科研人员,以及从事智能物流、智能制造、多智能体系统等相关方向的研究生与工程技术人员。 使用场景及目标:①应用于仓储机器人、AGV调度、自动化码头等多移动机器人协同作业场景;②解决多机器人路径规划中的死锁预防、冲突消解与资源竞争问题;③为开发高效、可靠的多智能体路径规划系统提供理论支持与实现参考。 阅读建议:此资源以Matlab代码实现为核心,建议读者在理解Petri网基本原理和优先级调度机制的基础上,结合提供的代码进行仿真实验,通过调整优先级规则与网络结构,深入掌握算法的设计思路与优化方法。


非技术区
