第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

進(jìn)度條可以在主程序之外的類中使用嗎?

進(jìn)度條可以在主程序之外的類中使用嗎?

慕斯王 2019-06-01 14:09:43
進(jìn)度條可以在主程序之外的類中使用嗎?現(xiàn)在,我的主調(diào)用一個(gè)10行的gui。根據(jù)這些行中有多少行有文本,將調(diào)用9個(gè)類中的一個(gè)(兩行必須有文本)。被調(diào)用的類執(zhí)行我希望將進(jìn)度條綁定到的計(jì)算。下面是一個(gè)被調(diào)用類的示例(每個(gè)類相似,但不同到足以保證一個(gè)新類)。我認(rèn)為這個(gè)問題違反了EDT規(guī)則,但我在這些規(guī)則上看到的所有例子都涉及到一個(gè)主要的論點(diǎn)。運(yùn)行代碼時(shí)會(huì)出現(xiàn)框架,但直到所有計(jì)算完成后,進(jìn)度條才會(huì)更新。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class twoLoan extends JFrame {     static JFrame progressFrame;     static JProgressBar progressBar;     static Container pane;     double amountSaved = 0;     int i = 0;     public void runCalcs(Double MP, Double StepAmt,         Double L1, Double L2, Double C1, Double C2,         Double IM1, Double IM2, Double M1Start, Double M2Start) {         try {             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());         } catch (Exception e) {         }         int iterations = (int) (MP - (M1Start * M2Start));         //Create all components         progressFrame = new JFrame("Calculation Progress");         progressFrame.setSize(300, 100);         pane = progressFrame.getContentPane();         pane.setLayout(null);         progressFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         progressBar = new JProgressBar(0, iterations);         //Add components to pane         pane.add(progressBar);         //Position controls (X, Y, width, height)         progressBar.setBounds(10, 10, 280, 20);         //Make frame visible         progressFrame.setResizable(false); //No resize         progressFrame.setVisible(true);         double M1 = M1Start;         double M2 = M2Start;         // Set MinLoop as maximum to start         // Loan 1         double N1 = (Math.log10(1 - IM1 * L1 / M1) * -1) / Math.log10(1 + IM1);         double M1Sum = M1 * N1;         // Loan 2         double N2 = (Math.log10(1 - IM2 * L2 / M2) * -1) / Math.log10(1 + IM2);         double M2Sum = M2 * N2;         double minLoop = M1Sum + M2Sum;         double MTotal = 0;
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

我認(rèn)為你的預(yù)感是對(duì)的,你需要堅(jiān)持?jǐn)[動(dòng)線程的規(guī)則。

那該怎么辦呢?

首先,我不知道你的應(yīng)用程序是如何設(shè)計(jì)的。你說(shuō)你有一個(gè)有很多行的主框架,每個(gè)行都有可能調(diào)用9個(gè)類中的一個(gè),它們看起來(lái)都和上面的類似。這些類似乎會(huì)生成自己的JFrame..我想這個(gè)新的框架只用于進(jìn)度條。我將假設(shè)這是設(shè)計(jì),并將提出相應(yīng)的建議。

我建議您在Runnable,你放下那些Runnable實(shí)例SwingUtilities.invokeLater讓他們?cè)贓DT上運(yùn)行。同時(shí),如果閱讀的話,我會(huì)花時(shí)間重新整理您的代碼。

  1. 將GUI位的創(chuàng)建移動(dòng)到一個(gè)方法中:
public void createComponents () {
      SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          //Create all components
          progressFrame = new JFrame("Calculation Progress");
          progressFrame.setSize(300, 100);
          pane = progressFrame.getContentPane();
          pane.setLayout(null);
          progressFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          progressBar = new JProgressBar(0, iterations);
          //Add components to pane
          pane.add(progressBar);

          //Position controls (X, Y, width, height)
          progressBar.setBounds(10, 10, 280, 20);

          //Make frame visible
          progressFrame.setResizable(false); //No resize
          progressFrame.setVisible(true);
       }
      });

    }
  1. 然后,我將對(duì)calc中的兩個(gè)GUI操作進(jìn)行處理:
     private void updateProgressBar(final int i) {
           SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                   progressBar.setValue(i);
                   //no need for the following
                   //progressBar.repaint(); 

                }
           });
    }

    private void killDialog() {
           SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    progressFrame.setVisible(false);
                }
            });
    }


查看完整回答
反對(duì) 回復(fù) 2019-06-01
  • 3 回答
  • 0 關(guān)注
  • 462 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)