이번에는 Main을 Parent로 바꾼다.
Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));
primaryStage.setTitle("Progress 예제");
Border를 지워주고 Pane을 추가
Pane(400, 400) 위에
Label : Code : fx:id - result
ProgressBar : Code : fx:id - bar
ProgressIndicator : Code : fx:id - pi
Button(+) : Code : OnAction - plus
Button(auto) : Code : OnAction - auto
Button(-) : Code : OnAction - minus
Controller Class 설정을 마치고 코딩
다음 코드는 버튼을 누를 경우 +, - 가 되고 그 값을 Label에 띄우고 Progress bar, Indicator에도 띄운다.
또한 auto에 Thread를 적용하여 자동으로 증가하게끔 코딩
package app; import java.net.URL; import java.util.ResourceBundle; import javafx.application.Platform; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import javafx.scene.control.ProgressBar; import javafx.scene.control.ProgressIndicator; public class MainController implements Initializable{ @FXML private Label result; @FXML private ProgressBar bar; @FXML private ProgressIndicator pi; private int percent = 0; @Override public void initialize(URL location, ResourceBundle resources) { System.out.println("FXML 완"); } public void plus() { if(percent<100) { percent++; }else { percent = 0; } print(percent); } public void minus() { if(percent > 0) { percent--; }else { percent = 100; } print(percent); } public void print(int num) { result.setText(num + "%"); bar.setProgress(num*0.01); // 1을 100%로 잡으므로 0.01을 곱한다. pi.setProgress(num*0.01); } public void auto() { // 스레드로 pi의 % 채우기 Thread th = new Thread() { @Override public void run() { // 방법 1 (충돌 발생) // while(true) { // 스레드를 임의로 만들면 작동은 되지만 예외를 발생 // // FX등록 스레드만 쓰라는것 // try { // 코드 안의 값들은 상관없는데 UI도 하나의 스레드로 서로 간섭이 일어나 충돌 // plus(); // 코드 안의 값들은 상관없는데 UI도 하나의 스레드로 서로 간섭이 일어나 충돌 // Thread.sleep(100); // } catch (InterruptedException e) { // e.printStackTrace(); // } // } // 방법 2, 1의 해결법 while(true) { Platform.runLater(()->{ // 자바 8버젼부터 사용가능, UI 충돌이 예상되는 지점에 사용 plus(); }); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }; th.start(); } }
'JavaFX > 01.Node 추가' 카테고리의 다른 글
[JAVA FX]01-12.Line Chart, Random (0) | 2018.09.11 |
---|---|
[JAVA FX]01-11.PieChart (0) | 2018.09.11 |
[JAVA FX]01-09.속성 감시, 속성 바인딩 (0) | 2018.09.10 |
[JAVA FX]01-08.Menu 바 추가 (0) | 2018.09.10 |
[JAVA FX]01-07.TreeView (0) | 2018.09.10 |