`
123629996
  • 浏览: 295296 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java swing 定时任务小工具(java窗体样式可改变)

阅读更多

最近以来,由于一直比较闲,所以有时间干一些事情,所以就有了这个采用java swing来完成的这个小工具。由于比较简单。所以将所有的逻辑处理都放在了一个类中,规范性上不是很好。另外这个小工具可以换肤,采用了java内置的5中样式,可以导出成可运行的jar文件使用。ok,废话不说,直接看代码:

package com.yjck.timetask;


public class TimeTask extends JFrame implements ActionListener{

	private static final long serialVersionUID = 1L;
	private String path = null;
	private Map<Integer,String> map = new HashMap<Integer,String>();
	private JPanel mainPanel = null;
	private JPanel btPanel = null;
	private JRadioButton closeRadio = null;
	private JRadioButton resetRadio = null;
	private JRadioButton logoutRadio = null;
	private JRadioButton planRadio = null;
	private ButtonGroup btGroup = null;	
	private JLabel titleLabel = null;
	private JLabel timeLabel = null;	
	private JLabel lookAndFell = null;
	private JTextField timeField =null;
	private JTextField planField = null;
	private JButton browerBt = null;
	private JButton ConfirmBt = null;
	private JButton CancelBt = null;
	private JComboBox laf = null;
	
	public TimeTask(){
		init();
	}
	/**
	 * 填充下拉列表
	 * @return Vector<String>
	 */
	private Vector<String> initComboBos() {
		//获得所有java自带的样式
		LookAndFeelInfo[] lafInfo =  UIManager.getInstalledLookAndFeels();
		Vector<String> lafs = new Vector<String>();
		for (int i = 0; i < lafInfo.length; i++) {
			//将样式存入map中,以便在更改样式时能找到。
			map.put(i,lafInfo[i].getClassName());
			String[] temp = lafInfo[i].getClassName().split("\\.");
			String str = temp[temp.length-1].replace("LookAndFeel", "");
			lafs.addElement(str);
		}
		return lafs;
	}
	@SuppressWarnings("static-access")
	private void init(){
		this.mainPanel = (JPanel) this.getContentPane();
		this.mainPanel.setLayout(new GridBagLayout());
		GridBagConstraints gbc = new GridBagConstraints();
		this.btGroup = new ButtonGroup();
		
		gbc.gridx = 1;
		gbc.gridy = 0;
		this.titleLabel = new JLabel("定时任务小工具");
		this.mainPanel.add(this.titleLabel,gbc);
		
		gbc.gridx = 0;
		gbc.gridy = 1;
		this.closeRadio = new JRadioButton("关机");
		this.closeRadio.addActionListener(this);
		this.closeRadio.setSelected(true);
		this.btGroup.add(this.closeRadio);
		this.mainPanel.add(this.closeRadio,gbc);
		
		gbc.gridx = 1;
		gbc.gridy = 1;
		this.resetRadio = new JRadioButton("重启");
		this.resetRadio.addActionListener(this);
		this.btGroup.add(this.resetRadio);
		this.mainPanel.add(this.resetRadio,gbc);
		
		gbc.gridx = 2;
		gbc.gridy = 1;
		this.logoutRadio = new JRadioButton("注销");
		this.resetRadio.addActionListener(this);
		this.btGroup.add(this.logoutRadio);
		this.mainPanel.add(this.logoutRadio,gbc);
		
		gbc.gridx = 0;
		gbc.gridy = 2;
		this.planRadio = new JRadioButton("计划任务");
		this.planRadio.addActionListener(this);
		this.btGroup.add(this.planRadio);
		this.mainPanel.add(this.planRadio,gbc);
		
		gbc.gridx = 1;
		gbc.gridy = 2;
		this.planField = new JTextField(10);
		this.planField.setEditable(false);
		this.mainPanel.add(this.planField,gbc);
		
		gbc.gridx = 2;
		gbc.gridy = 2;
		this.browerBt = new JButton("浏览");
		this.browerBt.setEnabled(false);
		this.browerBt.addActionListener(this);
		this.mainPanel.add(this.browerBt,gbc);
		
		gbc.gridx = 0;
		gbc.gridy = 3;
		this.timeLabel= new JLabel("请输入时间(分钟)");
		this.mainPanel.add(this.timeLabel,gbc);
		
		gbc.gridx = 1;
		gbc.gridy = 3;
		this.timeField= new JTextField(10);
		this.mainPanel.add(this.timeField,gbc);
		
		gbc.gridx = 0;
		gbc.gridy = 4;
		this.lookAndFell= new JLabel("请选择样式");
		this.mainPanel.add(this.lookAndFell,gbc);
		
		gbc.gridx = 1;
		gbc.gridy = 4;
		this.laf = new JComboBox(initComboBos());
		this.laf.addActionListener(this);
		this.mainPanel.add(this.laf,gbc);
		
		
		gbc.gridx = 1;
		gbc.gridy = 5;
		this.btPanel = new JPanel();
		this.ConfirmBt = new JButton("确定");
		this.ConfirmBt.addActionListener(this);
		this.CancelBt = new JButton("取消");
		this.CancelBt.addActionListener(this);
		this.btPanel.add(this.ConfirmBt);
		this.btPanel.add(this.CancelBt);
		this.mainPanel.add(this.btPanel,gbc);
		
		
		
		
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		int x = (d.height - 200)/2;
		int y = (d.width - 350)/2;
		this.setBounds(x, y, 350, 200);
		this.setTitle("定时任务");
		this.setVisible(true);
		this.setResizable(false);
		this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
	}
	

	@Override
	public void actionPerformed(ActionEvent event) {
		/**************************************
		 * 判断计划任务是否选中,如果是则浏览按钮可用
		 * 否则不可用,并将显示程序路径的输入框清空 
		 * ************************************
		 */
		if(this.planRadio.isSelected()){
			this.browerBt.setEnabled(true);
		}else{
			this.planField.setText("");
			this.browerBt.setEnabled(false);
		}
		/**************************************
		 * 更改样式,通过找到选中样式的索引对应在
		 * map中找到 定义样式的类路径
		 * ************************************
		 */
		int index = this.laf.getSelectedIndex();
		try {
			UIManager.setLookAndFeel(this.map.get(index));
			//更新样式
			SwingUtilities.updateComponentTreeUI(this);
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
		} catch (InstantiationException e1) {
			e1.printStackTrace();
		} catch (IllegalAccessException e1) {
			e1.printStackTrace();
		} catch (UnsupportedLookAndFeelException e1) {
			e1.printStackTrace();
		}
		
		//当浏览按钮按下时弹出文件选中对话框。
		if(event.getActionCommand().equals("浏览")){
			System.out.println("浏览");
			 JFileChooser chooser = new JFileChooser();
			 //设置文件的过滤,这里是可执行文件
			    FileNameExtensionFilter filter = new FileNameExtensionFilter(
			        "可执行文件bat&exe&msi", "bat", "exe","msi");
			    chooser.setFileFilter(filter);
			    int returnVal = chooser.showOpenDialog(null);
			    //返回文件的完整路径
			    if(returnVal == JFileChooser.APPROVE_OPTION) {
			       path = chooser.getSelectedFile().getPath();
			       this.planField.setText(path);
			      
			    }

		}
		//点击确定按钮执行的操作
		if(event.getActionCommand().equals("确定")){
			System.out.println("确定");
			//获得系统运行环境
			Runtime runTime = Runtime.getRuntime();
			String time = this.timeField.getText();
			//对输入时间进行验证
			if(time == null || time.equals("")){
				JOptionPane.showMessageDialog(this, "请输入延迟时间");
			}else{				
				if(this.planRadio.isSelected()){
					//在选中计划任务后检查是否选中了可执行文件
					if(this.path == null || this.path.equals("")){
						JOptionPane.showMessageDialog(this, "请选择可执行文件");
					}else{						
						try {						
							Thread.sleep((long) (Double.parseDouble(this.timeField.getText().trim())*60*1000));
							runTime.exec(path);
						}  catch (Exception e) {
							e.printStackTrace();
						}
					}
				}
				//关闭计算机
				if(this.closeRadio.isSelected()){
					try {
						Thread.sleep((long) (Double.parseDouble(this.timeField.getText().trim())*60*1000));
						runTime.exec("shutdown -s");
					}catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				//重启计算机
				if(this.resetRadio.isSelected()){
					try {
						Thread.sleep((long) (Double.parseDouble(this.timeField.getText().trim())*60*1000));
						runTime.exec("shutdown -r");
					}catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				//注销计算机
				if(this.logoutRadio.isSelected()){
					try {
						Thread.sleep((long) (Double.parseDouble(this.timeField.getText().trim())*60*1000));
						runTime.exec("shutdown -l");
					}catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}			
		}
		if(event.getActionCommand().equals("取消")){
			System.exit(0);
		}
		
	}
	
	
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args){
		new TimeTask();
	}

}

 所有的代码都有注释,应该可以看懂的。布局是自己定位的gridbaglayout。其他的应该没啥说的了,只要是将java swing编程的一些特点都记录下来了,以便以后查用!

2
0
分享到:
评论

相关推荐

    java swing漂亮界面 超酷 javaswing教程

    为了实现更酷炫的视觉效果,Swing还支持自定义外观(LookAndFeel),可以改变组件的样式和感觉,使其符合Windows、Mac OS X或者Java的跨平台LookAndFeel。 在“超酷”的方面,开发者可以通过自定义绘图来创建独特的...

    Java Swing 小工具界面框架

    这个“Java Swing 小工具界面框架”是一个用于创建简单应用程序界面的示例,适合初学者学习Swing的基本用法。下面将详细阐述Swing的相关知识点。 1. **Swing组件**:Swing提供了多种组件,如按钮(JButton)、...

    java Swing定时关机

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。在这个场景中,我们讨论的是一个使用Java Swing编写的定时关机程序。这个程序允许用户设定一个特定的时间,...

    java swing漂亮界面(超酷) javaswing教程

    总之,Java Swing不仅是一个强大的工具集,也是开发者实现桌面应用创新设计的关键。通过这个教程,你将能够创建出美观且功能强大的软件界面,提高你的Java GUI编程技能,进一步拓宽你的职业发展道路。

    java_swing窗体布局

    Java Swing 窗体布局是Java图形用户界面(GUI)设计的重要组成部分,它决定了组件在窗口中的排列方式和外观。Swing提供了多种布局管理器,每种都有其独特的特性和用途,下面我们将详细讨论这些布局管理器。 1. **...

    Java Swing 自动定时关机代码

    Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(抽象窗口工具包)的扩展,提供了更多丰富的组件和功能。在Java Swing中实现自动定时关机的功能,通常涉及到对操作系统API的调用,以及Swing...

    基于Java Swing + MySQL的图书管理系统,优秀Java毕业设计系统,小白必看!

    基于Java Swing + MySQL的图书管理系统,优秀Java毕业设计系统,小白必看! 基于Java Swing + MySQL的图书管理系统,优秀Java毕业设计系统,小白必看! 基于Java Swing + MySQL的图书管理系统,优秀Java毕业设计系统...

    基于 java swing 开发的资源管理器。使用 java swing 美化包beautyeye对原生的 java.zip

    综上所述,这个基于Java Swing和BeautyEye的资源管理器项目,不仅展现了Swing的灵活性和可扩展性,还体现了BeautyEye在提升GUI美观度方面的优势,为用户提供了一个功能完备且视觉愉悦的文件管理和压缩工具。

    Java Swing飞机大战小游戏.zip

    Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java Swing飞机大战小游戏Java ...

    Java课程设计基于Javaswing的思维导图制作工具.zip

    Java课程设计基于Javaswing的思维导图制作工具.zipJava课程设计基于Javaswing的思维导图制作工具.zipJava课程设计基于Javaswing的思维导图制作工具.zipJava课程设计基于Javaswing的思维导图制作工具.zipJava课程设计...

    java+swing漂亮软件界面+超酷+以及javaswing教程.7z

    在开发过程中,Java Swing的组件可以通过调整各种属性来改变其外观,例如颜色、字体、边框等,从而实现漂亮的界面设计。同时,Swing还支持自定义布局管理器,这使得组件在不同尺寸的屏幕上都能够适应性地排列和展示...

    java swing汉诺塔窗体小游戏

    在这个Java Swing实现的汉诺塔窗体小游戏中,开发者为初学者提供了一个直观的学习平台,通过代码来理解递归和问题解决策略。 首先,`Hanoi11.java`是这个游戏的主要源代码文件。这个文件中,我们可能看到以下关键...

    基于Java,Swing的2048小游戏.zip

    基于Java,Swing的2048小游戏.zip基于Java,Swing的2048小游戏.zip基于Java,Swing的2048小游戏.zip基于Java,Swing的2048小游戏.zip基于Java,Swing的2048小游戏.zip基于Java,Swing的2048小游戏.zip基于Java,...

    水费信息管理系统 Java swing + mysql (窗体应用程序、GUI)

    本文将深入探讨一个基于Java Swing和MySQL的水费信息管理系统,它是一款实用的窗体应用程序(GUI),能够有效地帮助我们管理和追踪水费信息。 首先,Java Swing是Java平台上用于构建桌面应用程序的图形用户界面...

    javaSwing皮肤大全.rar

    压缩包中的子文件“Swing样式大全(全56种经典)”可能包含了超过原本描述中提到的50种皮肤,这56种经典样式可能是各种流行和独特设计的组合,涵盖了不同的主题和风格,如扁平化、拟物化、复古风等。开发者可以根据...

    Java实现桌面右下角弹窗,实现JavaSwing窗体闪烁

    Java Swing提供了一个`javax.swing.Timer`类,可以用来在一定间隔内执行重复任务。我们可以利用这个定时器来改变窗口的可见性,从而实现闪烁效果。以下是一个简单的闪烁示例: ```java import javax.swing.Timer; ...

    Java swing画随机圆

    Java Swing 是Java图形用户界面(GUI)工具包的一部分,它允许开发者创建丰富的桌面应用程序。在“Java Swing画随机圆”这个题目中,学生被要求利用Java Swing库来创建一个程序,该程序能够在屏幕上动态地绘制出大小...

    java swing小程序

    Java Swing 是Java编程语言中用于构建图形用户界面(GUI)的一个工具包,它是Java Foundation Classes (JFC)的一部分。这个“java swing小程序”压缩包很可能包含了一些示例代码,可以帮助初学者或者开发者更好地...

Global site tag (gtag.js) - Google Analytics