2016-04-07 17 views
0

benim gibi aşağıda benim Salıncak ilerleme çubuğu sınıfı:JavaFX ProgressBar bir Salıncak İlerleme çubuğu dönüştürme

public class MyProgessBar extends JDialog implements Runnable { 
/** 
* @param string 
*/ 
private JProgressBar progressBar; 
private boolean cancelled=false; 

public static void main(String[] args) throws InterruptedException{ 
    MyProgessBar p = new MyProgessBar("Test"); 
    new Thread(p).start(); 
    for(int i=0;i<500;i++){ 
     p.setMsg("Its "+i+"%"); 
     p.setDone(i); 
     Thread.sleep(200); 
    } 
    p.dispose(); 
} 

public MyProgessBar(String title) { 
    setTitle(title); 
    progressBar = new JProgressBar(); 
    progressBar.setValue(0); 
    progressBar.setStringPainted(true); 
    progressBar.setIndeterminate(true); 
    add(progressBar); 
    setSize(400, 50); 
    setLocationRelativeTo(null); 
    setModal(true); 
    SwingUtilities.invokeLater(this); 
} 

/** 
* @param string 
*/ 
public void setTaskName(String string) { 
    progressBar.setString(string); 
    setTitle(string); 
} 

/** 
* @param string 
*/ 
public void setMsg(String string) { 
    progressBar.setString(string); 

} 

/** 
* @param rows 
*/ 
public void setDone(int rows) { 
    progressBar.setValue(rows); 
} 

/** 
* 
*/ 
public void taskFinished() { 
    setVisible(false); 
    dispose(); 
} 

public void run() { 
    setVisible(true); 
    progressBar.setVisible(true); 
} 

protected void processWindowEvent(WindowEvent e) { 
    if (e.getID() == WindowEvent.WINDOW_CLOSING) { 
     this.cancelled = true; 
    } 
    super.processWindowEvent(e); 
} 

public boolean isCancelled(){ 
    return cancelled; 
} 

}

ve ben yöntemlerle benim ilerleme çubuğu

MyProgess bar = new MyProgess("Test"); 
    bar.setMsg("Test"); 

tanımlanan arıyorum

Yukarıdaki sınıfı tamamen javafx'e dönüştürmenin bir yoluna ihtiyacım var. Ben bir acemi Java ve javafx alıyorum ve alabileceğim herhangi bir yardım için minnettarım.

+0

Sizin salıncak kod aslında bozuldu: o Swing tek dişli kuralını ihlal eden bir arka plan iş parçacığı gelen UI günceller. Swing'de bu, programınızın temelde keyfi bir zamanda hata üretebileceği anlamına gelir. (Bkz. Bu [https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html).] JavaFX'de, eşdeğer kural olan 'IllegalStateException' değerini ihlal eden birçok çağrı. Https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm sayfasına bakın. –

cevap

0

JavaFX ProgressBar'ın kodu aşağıda verilmiştir. Ben onu JavaFX'ten yönlendirdim. Onu seni yardımcı olur umarım

import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.control.ProgressBar; 
import javafx.scene.control.ProgressIndicator; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class Main extends Application { 

final Float[] values = new Float[] {-1.0f, 0f, 0.6f, 1.0f}; 
final Label [] labels = new Label[values.length]; 
final ProgressBar[] pbs = new ProgressBar[values.length]; 
final ProgressIndicator[] pins = new ProgressIndicator[values.length]; 
final HBox hbs [] = new HBox [values.length]; 

    @Override 
    public void start(Stage stage) { 
     Group root = new Group(); 
     Scene scene = new Scene(root, 300, 150); 
     scene.getStylesheets().add("progresssample/Style.css"); 
     stage.setScene(scene); 
     stage.setTitle("Progress Controls"); 


     for (int i = 0; i < values.length; i++) { 
      final Label label = labels[i] = new Label(); 
      label.setText("progress:" + values[i]); 

      final ProgressBar pb = pbs[i] = new ProgressBar(); 
      pb.setProgress(values[i]); 

      final ProgressIndicator pin = pins[i] = new ProgressIndicator(); 
      pin.setProgress(values[i]); 
      final HBox hb = hbs[i] = new HBox(); 
      hb.setSpacing(5); 
      hb.setAlignment(Pos.CENTER); 
      hb.getChildren().addAll(label, pb, pin); 
     } 

     final VBox vb = new VBox(); 
     vb.setSpacing(5); 
     vb.getChildren().addAll(hbs); 
     scene.setRoot(vb); 
     stage.show(); 
    } 
    public static void main(String[] args) { 
     launch(args); 
    } 
} 

..

İlgili konular