package PublicPannel; import javax.swing.*; import home.ButtonUtils; import home.MainFrame; import java.awt.*; import java.awt.event.ActionListener; public class UpgradePanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; private MainFrame mainFrame; private JButton upgradeBtn; private JTextField filePathField; private JButton selectBinBtn; private JProgressBar progressBar; private JLabel selectFileLabel; // ÐÂÔö£ºÓÃÓÚÎļþÑ¡Ôñ±êÇ© private JLabel progressLabel; // ÐÂÔö£ºÓÃÓÚ½ø¶È±êÇ© public UpgradePanel(MainFrame mainFrame) { this.mainFrame = mainFrame; initializeUI(); } private void initializeUI() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); // ÄÚÈÝÃæ°å - ʹÓô¹Ö±²¼¾Ö£¬ÓëBaseParameterPanelÒ»Ö JPanel contentPanel = new JPanel(); contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS)); // ÎļþÑ¡ÔñÃæ°å JPanel filePanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0)); filePathField = new JTextField(); filePathField.setEditable(false); filePathField.setPreferredSize(new Dimension(200, 25)); // ÉèÖÃÎļþ·¾¶¿í¶È selectBinBtn = ButtonUtils.createBlueButton(mainFrame.getString("select.bin.file")); selectBinBtn.addActionListener(e -> selectBinFile()); // ʹÓñäÁ¿ÒýÓñêÇ©£¬ÒÔ±ãºóÐø¸üРselectFileLabel = new JLabel(mainFrame.getString("select.bin.file")); filePanel.add(selectFileLabel); filePanel.add(filePathField); filePanel.add(selectBinBtn); // ½ø¶ÈÌõºÍÉý¼¶°´Å¥Ãæ°å - ·ÅÔÚͬһÐÐ JPanel progressButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0)); // ½ø¶ÈÌõ progressBar = new JProgressBar(0, 100); progressBar.setStringPainted(true); progressBar.setVisible(false); progressBar.setPreferredSize(new Dimension(200, 25)); // ÉèÖýø¶ÈÌõ¿í¶È // Éý¼¶°´Å¥ upgradeBtn = ButtonUtils.createBlueButton(mainFrame.getString("start.upgrade")); upgradeBtn.addActionListener(e -> startUpgrade()); // ʹÓñäÁ¿ÒýÓýø¶È±êÇ©£¬ÒÔ±ãºóÐø¸üРprogressLabel = new JLabel(mainFrame.getString("upgrade.progress")); // ÐèÒªÔÚÓïÑÔ×ÊÔ´ÎļþÖÐÌí¼Ó"upgrade.progress"¼ü progressButtonPanel.add(progressLabel); progressButtonPanel.add(progressBar); progressButtonPanel.add(upgradeBtn); // ÉèÖù̶¨¸ß¶È filePanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 35)); progressButtonPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 35)); // ½«ËùÓÐ×é¼þÌí¼Óµ½ÄÚÈÝÃæ°å contentPanel.add(Box.createVerticalStrut(10)); // ¶¥²¿10ÏñËØ¼ä¾à contentPanel.add(filePanel); contentPanel.add(progressButtonPanel); // Ìí¼ÓÄÚÈÝÃæ°å£¬²»Ìí¼Ó¹ö¶¯Ãæ°å add(contentPanel); } private void selectBinFile() { JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileChooser.setDialogTitle(mainFrame.getString("select.bin.file")); fileChooser.setFileFilter(new javax.swing.filechooser.FileNameExtensionFilter("BIN files (*.bin)", "bin")); int result = fileChooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { // ½«Ñ¡ÔñµÄÎļþ·¾¶ÏÔʾÔÚÎļþ·¾¶¿òÖÐ String selectedFile = fileChooser.getSelectedFile().getAbsolutePath(); filePathField.setText(selectedFile); JOptionPane.showMessageDialog(this, mainFrame.getString("selected.file") + ": " + selectedFile, mainFrame.getString("file.selected"), JOptionPane.INFORMATION_MESSAGE); } } private void startUpgrade() { // ¼ì²éÉý¼¶Ìõ¼þ if (filePathField.getText().isEmpty()) { JOptionPane.showMessageDialog(this, mainFrame.getString("please.select.file.first"), mainFrame.getString("warning"), JOptionPane.WARNING_MESSAGE); return; } progressBar.setVisible(true); upgradeBtn.setEnabled(false); // Ä£ÄâÉý¼¶½ø¶È Timer timer = new Timer(100, null); ActionListener actionListener = new ActionListener() { int progress = 0; @Override public void actionPerformed(java.awt.event.ActionEvent e) { progress += 5; progressBar.setValue(progress); if (progress >= 100) { ((Timer) e.getSource()).stop(); upgradeBtn.setEnabled(true); JOptionPane.showMessageDialog(UpgradePanel.this, mainFrame.getString("upgrade.completed"), mainFrame.getString("success"), JOptionPane.INFORMATION_MESSAGE); } } }; timer.addActionListener(actionListener); timer.start(); } public void updateLanguage() { // ¸üа´Å¥Îı¾ selectBinBtn.setText(mainFrame.getString("select.bin.file")); upgradeBtn.setText(mainFrame.getString("start.upgrade")); // ¸üбêÇ©Îı¾ selectFileLabel.setText(mainFrame.getString("select.bin.file")); progressLabel.setText(mainFrame.getString("upgrade.progress")); // ÐèÒªÔÚÓïÑÔ×ÊÔ´ÎļþÖÐÌí¼Ó"upgrade.progress"¼ü // ¸üÐÂÎļþÑ¡ÔñÆ÷¶Ô»°¿ò±êÌâ // ×¢Ò⣺ÕâÀïÎÞ·¨Ö±½Ó¸üÐÂÒÑ´´½¨µÄJFileChooser£¬µ«Ï´δò¿ªÊ±»áʹÓÃеÄÎı¾ revalidate(); repaint(); } }