窗口实现查询java后缀文件_java实现变更文件查询的方法

本文实例讲述了java实现变更文件查询的方法。分享给大家供大家参考。具体如下:

自己经常发布包时需要查找那些文件时上次发包后更新的数据文件,所以写了这个发布包,

拷贝输出的命令,dos窗口下执行,

为啥不直接复制文件,因为java拷贝文件会修改文件最后修改日期,所以采用dos下的拷贝。

/*

*

* 更改所生成文件模板为

* 窗口 > 首选项 > Java > 代码生成 > 代码和注释

*/

package com.cn.wangk.tools;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Calendar;

import java.util.GregorianCalendar;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JPanel;

/** *//**

* Bean to display a month calendar in a JPanel. Only works for the Western

* calendar.

*

* @author Ian F. Darwin, http://www.darwinsys.com/

* @version $Id: Cal.java,v 1.5 2004/02/09 03:33:45 ian Exp $

*/

public class Cal extends JPanel{

/** *//** The currently-interesting year (not modulo 1900!) */

protected int yy;

/** *//** Currently-interesting month and day */

protected int mm, dd;

/** *//** The buttons to be displayed */

protected JButton labs[][];

/** *//** The number of day squares to leave blank at the start of this month */

protected int leadGap = 0;

/** *//** A Calendar object used throughout */

Calendar calendar = new GregorianCalendar();

/** *//** Today's year */

protected final int thisYear = calendar.get(Calendar.YEAR);

/** *//** Today's month */

protected final int thisMonth = calendar.get(Calendar.MONTH);

/** *//** One of the buttons. We just keep its reference for getBackground(). */

private JButton b0;

/** *//** The month choice */

private JComboBox monthChoice;

/** *//** The year choice */

private JComboBox yearChoice;

/** *//**

* Construct a Cal, starting with today.

*/

Cal(){

super();

setYYMMDD(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),

calendar.get(Calendar.DAY_OF_MONTH));

buildGUI();

recompute();

}

/** *//**

* Construct a Cal, given the leading days and the total days

*

* @exception IllegalArgumentException

* If year out of range

*/

Cal(int year, int month, int today){

super();

setYYMMDD(year, month, today);

buildGUI();

recompute();

}

private void setYYMMDD(int year, int month, int today){

yy = year;

mm = month;

dd = today;

}

String[] months ={ "January", "February", "March", "April", "May", "June",

"July", "August", "September", "October", "November", "December" };

/** *//** Build the GUI. Assumes that setYYMMDD has been called. */

private void buildGUI(){

getAccessibleContext().setAccessibleDescription(

"Calendar not accessible yet. Sorry!");

setBorder(BorderFactory.createEtchedBorder());

setLayout(new BorderLayout());

JPanel tp = new JPanel();

tp.add(monthChoice = new JComboBox());

for (int i = 0; i < months.length; i++)

monthChoice.addItem(months[i]);

monthChoice.setSelectedItem(months[mm]);

monthChoice.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

int i = monthChoice.getSelectedIndex();

if (i >= 0){

mm = i;

// System.out.println("Month=" + mm);

recompute();

}

}

});

monthChoice.getAccessibleContext().setAccessibleName("Months");

monthChoice.getAccessibleContext().setAccessibleDescription(

"Choose a month of the year");

tp.add(yearChoice = new JComboBox());

yearChoice.setEditable(true);

for (int i = yy - 5; i < yy + 5; i++)

yearChoice.addItem(Integer.toString(i));

yearChoice.setSelectedItem(Integer.toString(yy));

yearChoice.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

int i = yearChoice.getSelectedIndex();

if (i >= 0){

yy = Integer.parseInt(yearChoice.getSelectedItem()

.toString());

// System.out.println("Year=" + yy);

recompute();

}

}

});

add(BorderLayout.CENTER, tp);

JPanel bp = new JPanel();

bp.setLayout(new GridLayout(7, 7));

labs = new JButton[6][7]; // first row is days

bp.add(b0 = new JButton("S"));

bp.add(new JButton("M"));

bp.add(new JButton("T"));

bp.add(new JButton("W"));

bp.add(new JButton("R"));

bp.add(new JButton("F"));

bp.add(new JButton("S"));

ActionListener dateSetter = new ActionListener(){

public void actionPerformed(ActionEvent e){

String num = e.getActionCommand();

if (!num.equals("")){

// set the current day highlighted

setDayActive(Integer.parseInt(num));

// When this becomes a Bean, you can

// fire some kind of DateChanged event here.

// Also, build a similar daySetter for day-of-week btns.

}

}

};

// Construct all the buttons, and add them.

for (int i = 0; i < 6; i++)

for (int j = 0; j < 7; j++){

bp.add(labs[i][j] = new JButton(""));

labs[i][j].addActionListener(dateSetter);

}

add(BorderLayout.SOUTH, bp);

}

public final static int dom[] ={ 31, 28, 31, 30, /**//* jan feb mar apr */

31, 30, 31, 31, /**//* may jun jul aug */

30, 31, 30, 31 /**//* sep oct nov dec */

};

/** *//** Compute which days to put where, in the Cal panel */

protected void recompute(){

// System.out.println("Cal::recompute: " + yy + ":" + mm + ":" + dd);

if (mm < 0 || mm > 11)

throw new IllegalArgumentException("Month " + mm

+ " bad, must be 0-11");

clearDayActive();

calendar = new GregorianCalendar(yy, mm, dd);

// Compute how much to leave before the first.

// getDay() returns 0 for Sunday, which is just right.

leadGap = new GregorianCalendar(yy, mm, 1).get(Calendar.DAY_OF_WEEK) - 1;

// System.out.println("leadGap = " + leadGap);

int daysInMonth = dom[mm];

if (isLeap(calendar.get(Calendar.YEAR)) && mm > 1)

++daysInMonth;

// Blank out the labels before 1st day of month

for (int i = 0; i < leadGap; i++){

labs[0][i].setText("");

}

// Fill in numbers for the day of month.

for (int i = 1; i <= daysInMonth; i++){

JButton b = labs[(leadGap + i - 1) / 7][(leadGap + i - 1) % 7];

b.setText(Integer.toString(i));

}

// 7 days/week * up to 6 rows

for (int i = leadGap + 1 + daysInMonth; i < 6 * 7; i++){

labs[(i) / 7][(i) % 7].setText("");

}

// Shade current day, only if current month

if (thisYear == yy && mm == thisMonth)

setDayActive(dd); // shade the box for today

// Say we need to be drawn on the screen

repaint();

}

/** *//**

* isLeap() returns true if the given year is a Leap Year.

*

* "a year is a leap year if it is divisible by 4 but not by 100, except

* that years divisible by 400 *are* leap years." -- Kernighan & Ritchie,

* _The C Programming Language_, p 37.

*/

public boolean isLeap(int year){

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

return true;

return false;

}

/** *//** Set the year, month, and day */

public void setDate(int yy, int mm, int dd){

// System.out.println("Cal::setDate");

this.yy = yy;

this.mm = mm; // starts at 0, like Date

this.dd = dd;

recompute();

}

/** *//** Unset any previously highlighted day */

private void clearDayActive(){

JButton b;

// First un-shade the previously-selected square, if any

if (activeDay > 0){

b = labs[(leadGap + activeDay - 1) / 7][(leadGap + activeDay - 1) % 7];

b.setBackground(b0.getBackground());

b.repaint();

activeDay = -1;

}

}

private int activeDay = -1;

/** *//** Set just the day, on the current month */

public void setDayActive(int newDay){

clearDayActive();

// Set the new one

if (newDay <= 0)

dd = new GregorianCalendar().get(Calendar.DAY_OF_MONTH);

else

dd = newDay;

// Now shade the correct square

Component square = labs[(leadGap + newDay - 1) / 7][(leadGap + newDay - 1) % 7];

square.setBackground(Color.red);

square.repaint();

activeDay = newDay;

}

/** *//** For testing, a main program */

public static void main(String[] av){

JFrame f = new JFrame("Cal");

Container c = f.getContentPane();

c.setLayout(new FlowLayout());

// for this test driver, hardcode 1995/02/10.

c.add(new Cal(1995, 2 - 1, 10));

// and beside it, the current month.

c.add(new Cal());

f.pack();

f.setVisible(true);

}

}

希望本文所述对大家的java程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值