public class InstallUI extends JFrame implements ChangeListener, ActionListener {
private static final long serialVersionUID = 1L;
static JLabel jLabelTop;//顶层图片标签
static JLabel jLabelLeft;//左边图片标签
static JLabel jLabelCenter;//中间显示倒计时标签
static JTextArea jTextArea;//右边文本域标签
static JButton jButton;//底部按钮
static JProgressBar jProgressbar;//进度条
static Timer timer;//进度条计时器
static String progressSgin;//标识进度条显示快慢
static boolean stopTimer = false;//倒计时暂停标识
Object[] options = { "OK", "Cancel" };//OK、Cancel按钮
Object[] errorOpt = { "OK" };//出错按钮
MyThread thread = null;//倒计时线程
/**
* 界面初始化构造函数
*/
public InstallUI() {
Image icon = Toolkit.getDefaultToolkit().getImage("./bin/title.gif");
this.setIconImage(icon);// 替换Java图标
this.setSize(720, 460);
this.getContentPane().setLayout(null);
this.add(getJLabelTop(), null);
this.add(getJTextArea(), null);
this.add(getJButton(), null);
this.add(getJLabelLeft(), null);
this.add(getJProgressBar(), null);
this.add(getJLabelCenter(), null);
this.setTitle("Install UniBI");
this.setResizable(false);// 去掉Jframe最大化按钮
this.setLocationRelativeTo(null);// 设置窗口中央显示
// this.setUndecorated(true); //去除JFrame的边框就跟JWindow一样
/*
* 处理关闭窗口的操作,若你没写这一段,就算你已经关闭窗口了,但程序并不会终止。
*/
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);//设置点击关闭按钮触发事件
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
showOptionDialog();
}
});
}
/**
* 顶层图片标签
* @return
*/
private JLabel getJLabelTop() {
if (jLabelTop == null) {
jLabelTop = new javax.swing.JLabel(new ImageIcon("./bin/title.gif"));
jLabelTop.setBounds(245, 10, 453, 40);
}
return jLabelTop;
}
/**
* 左边图片标签
* @return
*/
private JLabel getJLabelLeft() {
if (jLabelLeft == null) {
jLabelLeft = new javax.swing.JLabel(
new ImageIcon("./bin/left1.gif"));
jLabelLeft.setBounds(8, 10, 230, 400);
}
return jLabelLeft;
}
/**
* 倒计时图片标签
* @return
*/
private JLabel getJLabelCenter() {
if (jLabelCenter == null) {
jLabelCenter = new javax.swing.JLabel();
jLabelCenter.setBounds(35, 210, 150, 30);
}
return jLabelCenter;
}
/**
* 文本域显示区
* @return
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new javax.swing.JTextArea();
jTextArea.setBounds(245, 60, 440, 260);
}
return jTextArea;
}
/**
* 进度条显示区
* @return
*/
private JProgressBar getJProgressBar() {
if (jProgressbar == null) {
jProgressbar = new JProgressBar();
jProgressbar.setBounds(245, 345, 430, 27);
jProgressbar.setOrientation(JProgressBar.HORIZONTAL);
jProgressbar.setMinimum(0);
jProgressbar.setMaximum(100);
jProgressbar.setValue(0);
jProgressbar.setStringPainted(true);
jProgressbar.addChangeListener(this);
jProgressbar.setPreferredSize(new Dimension(300, 20));
jProgressbar.setBorderPainted(true);
jProgressbar.setBackground(Color.white);
jProgressbar.setForeground(Color.decode("#33CC00"));
setTimer(10);
}
return jProgressbar;
}
/**
* 弹出消息选择框
*/
private void showOptionDialog() {
stopTimer = true;
timer.stop();
int response = JOptionPane.showOptionDialog(null,
"Are you sure want to exit installation UniBI?",
"Exit Installation UniBI", JOptionPane.YES_OPTION,
JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
if (response == 0) {
System.exit(0);
} else {
timer.start();
stopTimer = false;
}
}
/**
* 点击底部按钮时触发事件
* @return
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new javax.swing.JButton();
jButton.setBounds(615, 390, 75, 27);
jButton.setText("Cancel");
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showOptionDialog();
}
});
}
return jButton;
}
/**
* 设置文本域显示信息
* @param str
*/
public void setExposition(String str) {
String exposeInfor = null;
String[] showInfor = str.split("#");
exposeInfor = showInfor[0] + "\n";
for (int i = 1; i < showInfor.length; i++) {
exposeInfor = exposeInfor + "\n " + showInfor[i] + "\n";
}
jTextArea.setText(exposeInfor);
jTextArea.setFont(new Font("Arial", Font.ROMAN_BASELINE, 12));
}
/**
* 弹出错误消息框
* @param str
*/
public void setMoreErrorInfo(String str){
stopTimer = true;
timer.stop();
String exposeInfor = "";
String[] showInfor = str.split("#");
exposeInfor = "1."+showInfor[1]+ "\n";
for (int i = 2; i < showInfor.length; i++) {
exposeInfor = exposeInfor +String.valueOf(i)+"."+ showInfor[i]+ "\n";
}
JOptionPane pane = new JOptionPane(showInfor[0],
JOptionPane.ERROR_MESSAGE,JOptionPane.DEFAULT_OPTION,null,errorOpt);
JDialog dialog = pane.createDialog(null, "Error");
Container grabbedContent = dialog.getContentPane();
JTextArea area = new JTextArea(exposeInfor, 4,
20);
pane.setFont(new Font("宋体", 0, 12));
area.setFont(new Font("宋体", 0, 12));
area.setLineWrap(true);
area.setWrapStyleWord(true);
JScrollPane scroller = new JScrollPane(area,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
MoreInfoPanel mip = new MoreInfoPanel(grabbedContent, scroller);
dialog.setContentPane(mip);
dialog.pack();
dialog.setVisible(true);
System.exit(0);
}
@Override
public void stateChanged(ChangeEvent e) {
}
private void setTimer(int timers) {
timer = new Timer(timers, (ActionListener) this);
timer.start();
}
/**
* 进度条触发事件
*/
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == timer) {
int value = jProgressbar.getValue();
if (value < 100)
jProgressbar.setValue(++value);
else {
timer.stop();
jProgressbar.setValue(0);
if (progressSgin.equals("step1")) {
setTimer(1000);
} else if (progressSgin.equals("step2")) {
setTimer(100);
}
// jButton.setText("Finish");
// this.dispose();//当完成100%的时候自动退出程序
}
}
}
/**
* 显示倒计时
* @param num
*/
@SuppressWarnings("deprecation")
public void showUntime(int num) {
if (thread != null) {
thread.stop();
}
thread = new MyThread();
thread.start();
}
/**
* 倒计时线程
* @author dKF41073
*
*/
private class MyThread extends Thread {
public void run() {
while (true) {
try {
for (int i = 0; i <= 70; i++) {
while (stopTimer) {
sleep(1);
}
sleep(100);
jLabelCenter.setText("About " + String.valueOf(70 - i)
+ " minutes left...");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
break;
}
}
}
public static void main(String[] args) {
InstallUI w = new InstallUI();
w.setVisible(true);
InstallUI.progressSgin="step1";
w.showUntime(70);
w.setExposition("Init installation and check Preparations#1.Read and Check install config------Processing");
InstallUI.jLabelLeft.setIcon(new ImageIcon("./bin/left2.gif"));
// InstallUI.jProgressbar.setValue(95);
// InstallUI.jLabelCenter.setText("haha");
}
}
分享到:
相关推荐
使用java.swing编写的计算界面,包括基本界面,文本框为右对齐,表头按钮等
本压缩包"Java swing编写的计算器界面.zip"包含了用Java Swing实现的计算器的源代码示例,以及相关文档,帮助开发者理解如何利用Swing构建这样的应用。 首先,让我们深入了解一下Java Swing。Swing是基于Java AWT...
Java开发基于swing编写的客户端界面简单的考试系统信息管理系统源码.zipJava开发基于swing编写的客户端界面简单的考试系统信息管理系统源码.zipJava开发基于swing编写的客户端界面简单的考试系统信息管理系统源码....
用java写的一个 Swing 界面的 记事本,拥有文件打开 保存等基本功能,还有查找替换 以及 更换字体等功能。
Swing版的简单计算器,实现加减乘除,第一次写,希望大家给点建议。
"Swing编写的日历和时钟"这个主题涉及到如何利用Swing组件来构建一个实用的日历和时钟应用。下面我们将详细探讨相关的知识点。 1. **Swing基础**: Swing是Java的一个组件库,提供了丰富的UI组件,如按钮、文本框...
在Java Swing中,你可以创建出既美观又高效的程序界面,而且Swing完全使用Java编写,具有平台无关性。 本教程“Java Swing漂亮界面(超酷) Java Swing教程”着重于如何利用Swing来设计吸引人的、用户友好的GUI。在...
Java Swing编写的图书管理系统源码+数据库.zipJava Swing编写的图书管理系统源码+数据库.zipJava Swing编写的图书管理系统源码+数据库.zipJava Swing编写的图书管理系统源码+数据库.zipJava Swing编写的图书管理系统...
在Java编程中,Swing类库是用于构建图形用户界面(GUI)的一个强大工具。本实验旨在让学生熟悉并掌握Swing的基本用法,包括创建窗口程序、添加组件以及使用布局管理器来组织窗口内的元素。通过这个实验,你将学习...
Swing 提供了一套轻量级组件,这些组件在功能上与AWT(Abstract Window Toolkit)组件相似,但它们是用纯Java编写的,因此具有更好的可移植性和更多的自定义选项。Swing组件包括按钮(JButton)、文本框(JTextField...
在这个“java swing 编写的简易计算器”项目中,我们将会探讨如何利用Swing组件来构建一个基本的计算器程序,适合初学者和小白进行学习。这个项目是用Eclipse IDE设计的,因此对于那些不熟悉此IDE的人来说,它提供了...
Java Swing 是Java GUI(图形用户界面)开发的一个重要工具,主要用于构建桌面应用程序。在本项目“java Swing 设计数据库前台界面”中,我们利用Swing组件来创建一个与数据库交互的用户界面,尤其是实现了JTable...
Swing是Java提供的一种图形用户界面(GUI)工具包,用于开发桌面应用程序。 在这样的应用中,用户界面通常包括输入字段,如用户名和密码文本框,以及登录和注册按钮。Swing组件如JFrame、JLabel、JTextField、...
Java绘图软件是一款基于Java Swing库开发的简单图形编辑器,它允许用户创建并操作基本图形,同时还提供了保存、复制和粘贴等实用功能。在本文中,我们将深入探讨Java Swing以及这款软件背后的关键技术。 Java Swing...
swing写的QQ2009登陆界面!!!!!!!!!!!!!!
标题中的“用javascript编写swing程序源码”表明这是一个关于使用JavaScript来实现Java Swing程序的示例。Java Swing是一个用于创建图形用户界面(GUI)的Java库,而JavaScript通常用于前端Web开发。这里的创新之处...
这个“Swing编写的数独软件”利用了Swing丰富的组件和事件处理机制,为用户提供了一个友好的交互界面,使玩家能够方便地解决数独谜题。 在数独软件设计中,Swing的主要贡献在于其组件库,如JFrame(主窗口)、...
Socket聊天室是一个基于Java Swing和Socket技术开发的桌面应用程序,它提供了用户友好的图形化界面,使得用户能够进行实时的在线聊天。这个项目的核心部分包括服务器端和客户端两大部分,同时集成了MySQL数据库来...
总结,这个基于Java Swing编写的图书管理系统展示了如何利用Java的强大功能和Swing的便利性来构建高效、易用的信息管理系统。通过学习和实践这个项目,开发者可以深入了解Java GUI编程,提升自己的软件开发技能。...
Java Swing是Java Foundation Classes (JFC)的一部分,它提供了一套丰富的图形用户界面组件,用于创建桌面应用程序。Swing库是轻量级的,因为它不依赖于操作系统提供的UI组件,而是使用Java自身的组件实现。这使得...