chevron_left

メインカテゴリーを選択しなおす

cancel
ITechProgram http://itech-program.com

主にJavaやJavaFXに関する記事を投稿しています! ゲームの作り方もブログ内で紹介してます!

ITechProgram
フォロー
住所
未設定
出身
未設定
ブログ村参加

2018/12/02

arrow_drop_down
  • 【JavaFX】ウィンドウの背景色をボタンで切り替える方法

    今回は上の画像のようなウィンドウを作成していきます。 基本的なやり方としては、ウィンドウの背景色を「Scene」に決定してもらい、ボタンを押した時に「Scene」の持つ背景色の情報を変更するようにします。 [crayon-5c07994eafc40669149894/] 「Button」クラスの「setOnAction」関数で、ボタンをおした時にこの関数の中身が実行されるようになります。 記述方式はラムダ式というものなのですが、これは「Java8」以降のバージョンでないと使えません。 なので、もし「Java8」ではなかったら、「Java8」にバージョンアップすることをオススメします。 そして色の変更ですが、色の変更は「Scene」クラスの「setFIll」関数を使います。 「setFill」関数の引数は「Paint」型なのですが、通常は「Color」クラスのフィールド(REDやBLACKなど)や、関数(「rgb」関数や「color」関数など)を使います。 あとは、「color」という名前のフラグ変数を用意して、「赤を表示しているなら黒」「黒を表示しているなら赤」、といったように場合分けをして完成です。

  • JavaでC言語の「system(“cls”)」をする方法

    Javaでsystem("cls")をする方法は、Windows(コマンドプロンプト)とMac(ターミナル)とで方法が異なるので、両方を紹介します。 Windows(コマンドプロンプト) [crayon-5c07994d7220f601467153/] 「ProcessBuilder」のコンストラクタの引数に、コマンドプロンプトで使うようなコマンドを入力します。 Mac(ターミナル) [crayon-5c07994d7221a663241468/] 「\033[H\033[2J」という、見慣れない文字列が出てきました。これはエスケープシーケンス(ESC・制御文字とも言います)といって、特別な文字を表します。 こちらの記事にエスケープシーケンスの表がありますので、詳しく知りたい方は是非お読みください。 こちらで簡単に紹介しますと 他にも色んなコードが使えますので、色々カスタマイズして遊ぶと面白いです。

  • 【JavaFX】MediaクラスのgetWidthやgetHeightが反映されない

    「Media」クラスの「getWidth」関数と「getHeight」関数は、それぞれ動画の幅・高さを取得するための関数ですが、取得したはずの数字がおかしいといった不具合が生じる可能性があります。 具体的に言うと、動画が幅・高さ(500×600)のはずなのに、取得できた数字は「0」だった場合です。 この不具合の原因は、動画が完全に読み込み終えていない状態で「getWidth」関数や「getHeight」関数を呼び出すことによって、正確な値が取得できないことにあります。 なので、動画完全に読み込み終えた後に使わなければ、この2つの関数は機能しません。もちろん、他の「Media」クラスの関数群も同じです。 では、どうやったら読み込み終えたか判断できるのかと言いますと、それは、「MediaPlayer」クラスの「setOnReady」関数を使うことで可能になります。 [crayon-5c07994dae21b794813786/] 合わせて読みたい

  • 【JavaFX】MediaPlayerを使って動画を再生する

    JavaFXで動画を再生する方法を紹介しています。

  • 【Java】ライブラリ(.jar)の「作り方」と「使い方」

    Javaでは、汎用的なプログラムを「JAR」ファイルにまとめて、ライブラリとして流用します。 今回はその「JAR」ファイルの作成方法と、「JAR」ファイルの使い方を紹介していきます。 プログラムの例 例として、2つの直角三角形かどうかを判断するプログラムを作成してみます。 [crayon-5c07994de85be627754381/] 今回は2つだけなので全体の記述量はそこまでないのですが、もし直角三角形を100個くらい判別しないといけなくなった時に、同じやり方だとどうなるでしょうか。 非常に煩雑で読み辛いプログラムになってしまいます。 特にチームワークでは、こういったスパゲティプログラムは嫌われてしまうので避けましょう。 まずは関数化をしてみる 同じ処理は関数化してしまいましょう。 [crayon-5c07994de85c9725743510/] 関数化することによって、100個でもマシなプログラムになりそうですね。 ライブラリ化する 直角三角形かどうかを判別するプログラムは、他のプログラムでも使えそうなものですよね。 ですから、さっき作った関数を別のクラスに移し替えて、ライブラリ化してみましょう。 [crayon-5c07994de85ce615909595/] 「Triangle」クラスに関数を移し替えたので、「Main」の方の記述も変更していきます。 [crayon-5c07994de85d1523283572/] 関数まるごと移し替えたので、「Main」全体の記述量が少なくなりました。これだけでもかなり違うと思いませんか? さて、「Triangle」クラスが出来上がったので、これを「JAR」ファイルにしてライブラリ化していきます。 「JAR」ファイルは基本的にコマンドプロンプトもしくはターミナル上で「jar」コマンドを使って作成します。 [crayon-5c07994de85d4071944631/] コマンドが少し長いので解説すると、 -c アーカイブを新規作成する -v 標準出力に詳細な出力を生成する -f アーカイブ・ファイル名を指定する -M エントリのマニフェスト・ファイルを作成しない ちなみに、アーカイブというのは「JAR」ファイルのことです。

  • 【Java】例外「InvocationTargetException」の原因を調べる方法

    「InvocationTargetException」という例外は、公式ドキュメントにはこう書かれています。 InvocationTargetExceptionは、呼び出されるメソッドまたはコンストラクタがスローする例外をラップする、チェック例外です。 出典: つまり、「InvocationTargetException」自体に意味があるわけではありません。その「InvocationTargetException」が何故出たのか、奥の原因を探る必要があります。 その最も簡単なやり方を紹介します。 [crayon-5c07994e740b8140130636/] 「getTargetException」関数で、スローされた原因である例外を取得することができます。 それでも原因がわからない場合 それでも原因がわからない場合とは、自分が作ったプログラムの中に、「InvocationTargetException」をスローする可能性のあるプログラムが無い場合です。 先ほど書いた「try-catch」文も、 [crayon-5c07994e740c1184367761/] コンパイルした時点でこういったエラーが出てしまったのではないでしょうか。 おそらく、使用しているAPI自身が「InvocationTargetException」をスローしているものと思われます。 例えば、「Application」クラスの「start」関数になにかしらの処理を書いたとして、その処理の中に「InvocationTargetException」をスローする可能性のあるプログラムはないが、「start」関数自体が「InvocationTargetException」をスローする場合です。 この場合は、「try-catch」文を自分が書いたプログラムに入れることは出来ないため、最初に紹介したやり方では解決できません。 なので、自分が書いた処理内容を工夫して「InvocationTargetException」が出ない処理に書き換える必要があります。

  • 【JavaFX】FPSを固定するやり方

    このFPS=60というのは、1秒間に60フレーム現れるということです。 つまりFPSを固定するには、1フレームにかかる時間を固定するということです。 ちなみに 1秒 = 1000ms なので、 この場合は 1フレーム = 1000ms ÷ 60 = 16.666...ms となります。 ここで問題になるのが、16.666...の、小数点以下の数字です。 無限に続いてしまうので、ピッタリ正確にとはいきません。 しかし、今回はなるべく正確になるようにしたいので、誤差時間を1フレームずつ修正していく方法をとります。 毎フレーム誤差時間を計算し、次のフレームに持ち越すことによって、トータルでの誤差をほぼなくしていきます。 また、整数型(long)で小数点以下の値を保持しないといけないため、あらかじめ整数型(long)の値を1000倍、10000倍するなどして保持するようにします。 掛け算はシフト演算することで高速化できるので、シフト演算を用います。 [crayon-5c331ed371fbb765210911/] 参考: メインループはメインスレッド内で「while」文を回して行います。 ループ内の処理は「Platform」クラスの「runLater」関数を実行して行います。

  • 【JavaFX】簡易HTMLエディタを作りながら、JavaFXの使い方を解説

    JavaFXを用いた簡易HTMLエディタを作るやり方を紹介します。 最終的な完成イメージはこちらです。 こんな感じのHTMLエディタを作っていきます。 JavaFX Scene Builder 2.0でレイアウトを作る JavaFX Scene Builder 2.0というアプリを使い、レイアウトを作成していきます。 JavaFXを使う上で、このアプリは必要不可欠です。 パソコンにアプリが入っていないという方は以下のリンクからダウンロードしてください。 そしたらアプリを開いて、レイアウトを作成していきます。 最初に、「AnchorPane」をドラッグアンドドロップしてください。 そしたら、下の「Controls」を開き、HTMLエディタを挿入します。 あとは「AnchorPane」と「HTMLEditor」の両方を上手くサイズ調整をしていきます。 しなくても今回は大丈夫ですが。 私は以下のように調整してみました。 サイズ調整はマウスで直感的に操作が可能です。 次に、ファイルを保存するためのボタンを追加します。 ボタンも「Controls」にあります。 今回はこのように配置しました。 ボタンを追加したら、「Text」の部分を変更しましょう。 最初は「Button」になっていると思いますが、今回は「HTML」と書き直します。 ここまでできたら名前を付けて保存します。 保存は、 「File」→「Save」 もしくは、 「Ctrl+S」キー を押せばできます。 今回は「main.fxml」という名前で保存しました。 Mainファイルを作成する それではMainファイルを作っていきます。 [crayon-5c289196be82d180765980/] FXMLをファイルを読み込むには、FXMLLoaderクラスのload関数を使用します。 [crayon-5c289196be838882265689/] load関数はこのように定義されています。 引数がURL型なので注意。 URL型は、ClassのgetResource関数で取得できます。 Class

arrow_drop_down

ブログリーダー」を活用して、ITechProgramさんをフォローしませんか?

ハンドル名
ITechProgramさん
ブログタイトル
ITechProgram
フォロー
ITechProgram

にほんブログ村 カテゴリー一覧

商用