⑴ java中如何实现进度条效果
核心代码如下:
timer = new Timer(DEFAULT_TIMEOUT, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (!uploadThread.isAlive()) {
timer.stop();
boolean isSuccess = false;
// StringBuffer serverOutMsg =
// uploadThread.getServerOutput();
if (uploadThread.getServerOutput().length() == 0) {
JOptionPane.showMessageDialog(JUploadPanel.this, "上传完毕");
filePanel.removeAll();
isSuccess = true;
} else {
// JOptionPane.showMessageDialog(JUploadPanel.this, "上传" + uploadThread.getTotalFileCount() + "个文件,失败" + uploadThread.getFailureCount() + "个,请查看日志。");
JOptionPane.showMessageDialog(JUploadPanel.this, "上传失败,请重新登录后继续上传。");
}
uploadThread.close();
uploadThread = null;
// set progress bar to 0%.
progress.setString(null);
progress.setValue(0);
// set stop button disabled
stop.setEnabled(false);
if (!isSuccess) {
remove.setEnabled(true);
removeAll.setEnabled(true);
upload.setEnabled(true);
}
browse.setEnabled(true);
}
}
});
timer.start();
基本上就是线程控制progress.setValue,value值就是进度条
⑵ Java中如何实现进度条效果
代码如下:import java.awt.Color; import java.awt.Toolkit; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JProgressBar; import javax.swing.JWindow; @SuppressWarnings("serial") public class Demo extends JWindow implements Runnable { // 定义加载窗口大小 public static final int LOAD_WIDTH = 455; public static final int LOAD_HEIGHT = 295; // 获取屏幕窗口大小 public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width; public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height; // 定义进度条组件 public JProgressBar progressbar; // 定义标签组件 public JLabel label; // 构造函数 public Demo() { // 创建标签,并在标签上放置一张图片 label = new JLabel(new ImageIcon("images/background.jpg")); label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); // 创建进度条 progressbar = new JProgressBar(); // 显示当前进度值信息 progressbar.setStringPainted(true); // 设置进度条边框不显示 progressbar.setBorderPainted(false); // 设置进度条的前景色 progressbar.setForeground(new Color(0, 210, 40)); // 设置进度条的背景色 progressbar.setBackground(new Color(188, 190, 194)); progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); // 添加组件 this.add(label); this.add(progressbar); // 设置布局为空 this.setLayout(null); // 设置窗口初始位置 this.setLocation((WIDTH - LOAD_WIDTH) / 2, (HEIGHT - LOAD_HEIGHT) / 2); // 设置窗口大小 this.setSize(LOAD_WIDTH, LOAD_HEIGHT); // 设置窗口显示 this.setVisible(true); } public static void main(String[] args) { Demo t = new Demo(); new Thread(t).start(); } @Override public void run() { for (int i = 0; i < 100; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } progressbar.setValue(i); } JOptionPane.showMessageDialog(this, "加载完成"); this.dispose(); } } 效果图:
⑶ JavaGUI——Java图形用户界面
GUI(Graphical User Interface,图形用户界面)是计算机操作界面的直观形式,相较于命令行界面,图形界面更易于用户理解与操作。
Java图形界面主要由AWT(Abstract Windows ToolKit,抽象窗口工具包)和Swing(AWT的扩展)两个核心库组成。AWT依赖于本地系统方法实现功能,属重量级控件,而Swing则完全由Java实现,增强了移植性,属轻量级组件。
容器是组件的子类,用于将组件组织为整体结构。容器包括窗口(JFrame)、弹窗(JDialog)、面板(JPanel)、滚动面板(JScrollPanel)等四种类型。窗口(JFrame)为具有标题栏的框架,可独立存在。弹窗(JDialog)则为自定义或标准对话框,JOptionPane提供快速创建对话框的静态方法。
面板作为容器的一种,不能独立存在,只能置于窗口中。面板用于容纳其他组件,实现特定布局。滚动面板(JScrollPane)支持水平和垂直滚动视图,文本区域、表格等组件可使用其包裹以实现滚动显示。分隔面板(JSplitPane)将两个组件通过水平/垂直分隔条分别左右或上下显示,并可调整分隔区域大小。选项卡面板(JTabbedPane)允许用户通过点击标题在一组组件间切换显示。
布局管理器控制组件在容器中的排列方式。流式布局(FlowLayout)按水平方向依次排列组件。网格布局(GridLayout)以矩形网格形式布置组件,一个网格中放置一个组件,组件自动撑满网格。边界布局(BorderLayout)将容器分为5个区域,每个区域放置一个组件。
基本组件如标签(JLabel)、按钮列表(JComboBox)、列表框(JList)、文本框(JTextField)、密码框(JPasswordField)、文本区域(JTextArea)、进度条(JProgressBar)、滑块(JSlider)等,用于展示文本、图片、文本输入与选择、进度显示等。复杂组件包括文件选取器(JFileChooser)、颜色选取器(JColorChooser)、菜单栏(JMenuBar)、工具栏(JToolBar)等,为用户提供了更多功能。
事件监听包括鼠标监听、键盘监听、窗口监听等。鼠标监听事件用于响应鼠标操作,键盘监听事件用于监听按键输入,窗口监听事件则关注窗口的激活与关闭。