⑴ 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)等,為用戶提供了更多功能。
事件監聽包括滑鼠監聽、鍵盤監聽、窗口監聽等。滑鼠監聽事件用於響應滑鼠操作,鍵盤監聽事件用於監聽按鍵輸入,窗口監聽事件則關注窗口的激活與關閉。