正文
java中窗口事件代码 java 窗口
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
JAVA怎么做点击按钮促发事件弹出浏览窗口选择excel文件读取,并显示到另外一个界面上,请给出主要代码
package com.excel;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.swing.JTextArea;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
/**
* 解析Excel的类
*/
public class ExcelOperate {
private JTextArea area;
private String fileName;
/**
* 构造方法传值
*
* @param area
* 显示Excel内容的位置
* @param fileName
* Excel文件名
*/
public ExcelOperate(JTextArea area, String fileName) {
this.area = area;
this.fileName = fileName;
}
/**
* 解析Excel文件
*/
public void parseExcel() {
File file = new File(fileName);
String[][] result = null;
try {
result = getData(file, 1);
} catch (IOException e) {
e.printStackTrace();
}
int rowLength = result.length;
for (int i = 0; i rowLength; i++) {
for (int j = 0; j result[i].length; j++) {
area.append(result[i][j] + "\t\t");
}
area.append("\n");
}
}
/**
* 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行
*
* @param file
* 读取数据的源Excel
* @param ignoreRows
* 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1
* @return 读出的Excel中数据的内容
* @throws FileNotFoundException
* @throws IOException
*/
public static String[][] getData(File file, int ignoreRows)
throws FileNotFoundException, IOException {
ListString[] result = new ArrayListString[]();
int rowSize = 0;
BufferedInputStream in = new BufferedInputStream(new FileInputStream(
file));
// 打开HSSFWorkbook
POIFSFileSystem fs = new POIFSFileSystem(in);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFCell cell = null;
for (int sheetIndex = 0; sheetIndex wb.getNumberOfSheets(); sheetIndex++) {
HSSFSheet st = wb.getSheetAt(sheetIndex);
// 第一行为标题,不取
for (int rowIndex = ignoreRows; rowIndex = st.getLastRowNum(); rowIndex++) {
HSSFRow row = st.getRow(rowIndex);
if (row == null) {
continue;
}
int tempRowSize = row.getLastCellNum() + 1;
if (tempRowSize rowSize) {
rowSize = tempRowSize;
}
String[] values = new String[rowSize];
Arrays.fill(values, "");
boolean hasValue = false;
for (short columnIndex = 0; columnIndex = row.getLastCellNum(); columnIndex++) {
String value = "";
cell = row.getCell(columnIndex);
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
if (date != null) {
value = new SimpleDateFormat("yyyy-MM-dd")
.format(date);
} else {
value = "";
}
} else {
value = new DecimalFormat("0").format(cell
.getNumericCellValue());
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
// 导入时如果为公式生成的数据则无值
if (!cell.getStringCellValue().equals("")) {
value = cell.getStringCellValue();
} else {
value = cell.getNumericCellValue() + "";
}
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_ERROR:
value = "";
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
value = (cell.getBooleanCellValue() == true ? "Y"
: "N");
break;
default:
value = "";
}
}
if (columnIndex == 0 value.trim().equals("")) {
break;
}
values[columnIndex] = rightTrim(value);
hasValue = true;
}
if (hasValue) {
result.add(values);
}
}
}
in.close();
String[][] returnArray = new String[result.size()][rowSize];
for (int i = 0; i returnArray.length; i++) {
returnArray[i] = (String[]) result.get(i);
}
return returnArray;
}
/**
* 去掉字符串右边的空格
*
* @param str
* 要处理的字符串
* @return 处理后的字符串
*/
public static String rightTrim(String str) {
if (str == null) {
return "";
}
int length = str.length();
for (int i = length - 1; i = 0; i--) {
if (str.charAt(i) != 0x20) {
break;
}
length--;
}
return str.substring(0, length);
}
}
------------------------------------------------------------------------------------------
package com.excel;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* 主界面,按钮响应事件,文本域输出Excel内容
*/
public class OpenExcel extends JFrame implements ActionListener {
private JButton button;
private JScrollPane pane;
private JTextArea area;
public OpenExcel() {
super("解析Excel");
button = new JButton("点我选择Excel文件");
button.addActionListener(this);
area = new JTextArea();
pane = new JScrollPane(area);
this.add(button, BorderLayout.NORTH);
this.add(pane);
this.setSize(300, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
// 按钮事件
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();// 文件选择对话框
chooser.setAcceptAllFileFilterUsed(false);// 取消所有文件过滤项
chooser.setFileFilter(new FileNameExtensionFilter("Excel文件", "xls"));// 设置只过滤扩展名为.xls的Excel文件
int i = chooser.showOpenDialog(this);// 打开窗口
if (i == JFileChooser.APPROVE_OPTION) {
this.setLocation(0, 0);
this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
new ExcelOperate(area, chooser.getSelectedFile().getAbsolutePath())
.parseExcel();
}
}
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new OpenExcel();
}
}
运行java代码怎样操作显示windowclosed--窗体关闭事件,求解答!!!
效果图
你想要触发的是窗口关闭事件windowClosed, 那么你需要调用dispose方法,对窗口进行销毁.
修改代码如下
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing--窗体正在关闭事件");
//f.setVisible(false);//隐藏窗口
f.dispose();//销毁窗口--这行代码会触发windowClosed事件
}
还有其他一些细节的修改,参考下面的代码
import java.awt.*;
import java.awt.event.*;
//类名不要写一个小写字母,推荐写一个完整的名词来作为类名
public class EventDemo {
public static void main(String[] args) {
Frame f = new Frame("hello");
f.setSize(300, 300);
f.setLocation(300, 200);
//f.setVisible(true);//不要先显示窗口, 先显示了窗口,就看不到"窗口打开事件"了
f.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
System.out.println("windowOpened--窗体打开事件");
}
@Override
public void windowIconified(WindowEvent e) {
System.out.println("windowIconified--窗体图标化事件");
}
@Override
public void windowDeiconified(WindowEvent e) {
System.out.println("windowDeiconifie--窗体取消图标化事件");
}
@Override
public void windowDeactivated(WindowEvent e) {
System.out.println("windowDeactivated--窗体停用事件");
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing--窗体正在关闭事件");
//f.setVisible(false);//隐藏窗口
f.dispose();//销毁窗口
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("windowClosed--窗体关闭事件");
System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) {
System.out.println("windowActivated--窗体激活事件");
}
});
f.setVisible(true);//窗口显示
}
}
Java 窗体事件
import java.awt.event.*;
import javax.swing.*;
public class WindowEvent extends JFrame{
public static void main(){
WindowEvent frame = new WindowEvent();
frame.setVisible(true);
}
public WindowEvent(){
super();
addWindowFocusListener( new MYWindowFocusListener());
setTitle("WindowEvent");
setBounds(100,100,500,375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class MYWindowFocusListener implements WindowFocusListener{
public void windowGainedFocus(java.awt.event.WindowEvent e) {
}
public void windowLostFocus(java.awt.event.WindowEvent e) {
}
}
}
private class MYWindowFocusListener() implements WindowFocusListener{
MYWindowFocusListener是个内部类 后面不能加()它是类不是方法,应该是
private class MYWindowFocusListener implements WindowFocusListener{
这段java 代码怎么添加动作响应事件,使点击它可以弹出一个窗口,窗口中有一句话
你少了一个菜单项,在菜单项上添加监听器。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
public class TestWin extends JFrame {
{
JMenuBar jmb = new JMenuBar();//创建菜单栏
JMenu jm1 = new JMenu("帮助");//创建菜单
jmb.add(jm1);
JMenuItem jmi = new JMenuItem("帮助");//创建菜单项
jm1.add(jmi);//把菜单项添加到菜单中
jmi.addActionListener(new ActionListener() {//给菜单项添加动作监听器
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(TestWin.this, "窗口中有一句话");//显示消息对话框
}
});
setJMenuBar(jmb);
setTitle("时钟");// 标题
setSize(800, 600);
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗口点击关闭时,退出程序
setVisible(true);// 窗口可见
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() - new TestWin());
}
}
java中窗口事件代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 窗口、java中窗口事件代码的信息别忘了在本站进行查找喔。