📄 interruptibleprogressdialog.java
字号:
/* * InterruptibleProgressDialog.java * * Created on 6 June 2006, 01:44 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package org.underworldlabs.swing;import java.awt.Container;import java.awt.Dimension;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import org.underworldlabs.Constants;import org.underworldlabs.swing.util.InterruptibleProcess;/** * * @author Takis Diakoumis * @version $Revision: 1.2 $ * @date $Date: 2006/07/15 11:47:49 $ */public class InterruptibleProgressDialog extends JDialog implements Runnable, ActionListener { /** The event parent to this object */ private InterruptibleProcess process; /** The progress bar widget */ private IndeterminateProgressBar progressBar; /** The parent frame of this dialog */ private Frame parentFrame; /** The progress bar label text */ private String labelText; public InterruptibleProgressDialog(Frame parentFrame, String title, String labelText, InterruptibleProcess process) { super(parentFrame, title, true); this.process = process; this.labelText = labelText; try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } public void run() { pack(); setLocation(GUIUtils.getLocationForDialog(parentFrame, getSize())); progressBar.start(); setVisible(true); } private void jbInit() throws Exception { progressBar = new IndeterminateProgressBar(); progressBar.setPreferredSize(new Dimension(260, 18)); JPanel base = new JPanel(new GridBagLayout()); JButton cancelButton = new CancelButton(); cancelButton.addActionListener(this); GridBagConstraints gbc = new GridBagConstraints(); Insets ins = new Insets(10, 20, 10, 20); gbc.insets = ins; base.add(new JLabel(labelText), gbc); gbc.gridy = 1; gbc.insets.top = 0; base.add(progressBar, gbc); gbc.gridy = 2; gbc.weighty = 1.0; base.add(cancelButton, gbc); base.setBorder(BorderFactory.createEtchedBorder()); Container c = this.getContentPane(); c.setLayout(new GridBagLayout()); c.add(base, new GridBagConstraints(1, 1, 1, 1, 1.0, 1.0, GridBagConstraints.SOUTHEAST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); setResizable(false); setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); } public void actionPerformed(ActionEvent e) { process.setCancelled(true); process.interrupt(); dispose(); } public void dispose() { if (progressBar != null) { progressBar.stop(); progressBar.cleanup(); } super.dispose(); } class CancelButton extends JButton { private int DEFAULT_WIDTH = 75; private int DEFAULT_HEIGHT = 30; public CancelButton() { super("Cancel"); setMargin(Constants.EMPTY_INSETS); } public int getWidth() { int width = super.getWidth(); if (width < DEFAULT_WIDTH) { return DEFAULT_WIDTH; } return width; } public int getHeight() { int height = super.getHeight(); if (height < DEFAULT_HEIGHT) { return DEFAULT_HEIGHT; } return height; } public Dimension getPreferredSize() { return new Dimension(getWidth(), getHeight()); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -