忍者ブログ

からすまる日誌

20200109pm02 シーンビルダーで作ったものをエクリプスで修正 ボタン

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

20200109pm02 シーンビルダーで作ったものをエクリプスで修正 ボタン

ctrl+shift+"f"でエクリプスのコードは見やすくなるらしい
  

ボタンのイベントを作りますよ
 
ボタンを押したらラベルの文字が変わる
 
①ラベルにもidを付ける
sample.fxml
 <Label fx:id="label1" style="-fx-background-color: #deff38;" text="Label" textFill="#00cbff" BorderPane.alignment="CENTER">
 
②sampleController.java
に記述
 
--->sampleController.java
 
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class SampleController
  implements Initializable{
 @FXML Label label1;
 @FXML Button button1;
 @Override
 public void initialize(URL location,
   ResourceBundle resources) {
  button1.setOnAction((AtionEvent)->{
   label1.setText("Hello!");
  });
 }
}
  

ボタン2を押したときに別のメッセージが出るようにもしましょうか
 
①sample.fxmlでidを付与
 
<Button fx:id="button2" mnemonicParsing="false" style="-fx-background-color: #000;" text="Button" textFill="#ffffffb8">
 
--->SampleController.java
 
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class SampleController
  implements Initializable{
 @FXML Label label1;
 @FXML Button button1;
 @FXML Button button2;
 @Override
 public void initialize(URL location,
   ResourceBundle resources) {
  button1.setOnAction((AtionEvent)->{
   label1.setText("Hello!");
  });
  button2.setOnAction((AtionEvent)->{
   label1.setText("go to hell!");
  });
 }
}
 
 
how to:
 
・ばってんがついたらfxのインポート文を足す
・Initializableの綴り
・public class SampleController
  implements Initializable{
は見やすいように改行しているだけなので一行目のおわりに{はつけない 
・@FXML Label label1;の最初のLableは大文字から
 

解説
 
①fxmlファイルで冒頭のところでうんちゃらうんちゃらかいてあるところで、BorderPaneが作られているから、
Mainの方でnewしなくてすんでいる
 
②Mainの
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
この部分がcssを読み込むような操作らしい(勝手に生成された)
 
③sampleControllerの
public void initialize(URL location,
   ResourceBundle resources) {
とは、パスの情報の部分
Bundleは「情報の束」のこと。
ほかのアプリと情報をやりとりするときにResourceBundle が出番になるらしい
 

共有からDLしたanimetion1-6.javaについての解説
 
Animation1.java
きりかえアニメ
 
public void run() {
    gc.drawImage(myImage[imgNo], 135, 100); // 23×32
    imgNo++;
    imgNo %= imgCnt;// imgNo = imgNo % imgCnt; // 次に表示する画像の番号
   }
 
ここが繰り返される部分
はじめ0番の画像(緑)→2まできたら0
 
imgNo %= imgCnt;
3でわった余りを入れてね
という形でリセットしている
 

 
  Timer timer = new Timer();
  timer.schedule(task, 0, 1000);
 
ここが一秒ごとに切り替えようという部分 
 

2:
これは別のswingというタイマーを使った例
 

3:
キーフレームを使った例
 
ライムラインがあるらしい
 
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(1000), new EventHandler<ActionEvent>(){
1秒ごときりかえ
 
        timeline.setCycleCount(Timeline.INDEFINITE);
永遠に継続
  
timeline.setDelay(Duration.millis(5000));
はじめの5秒は待機
 
サンプル1-3では3が一番多機能らしい
  
PR

コメント

ブログ内検索

カレンダー

04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31