php エディタ Xiaoxin は、Java Q&A のこの号を提供します: FXML アノテーション付きプロパティを正しく継承してサブクラスで使用できるようにする方法は? Java 開発では、FXML アノテーション付きプロパティを正しく継承することが一般的な問題であり、開発プロセス中に注意が必要な問題です。以下では、この問題をより適切に解決するために、アノテーション付きプロパティを正しく継承し、サブクラスで使用できるようにする方法について詳しく説明します。
質問内容
質問
コントローラ エリア ネットワーク上でメッセージ転送を実装しようとしています。メッセージは、javafx を使用して作成された GUI を介したユーザー入力に基づいて構築されます。
main.fxml にリンクされた maincontroller
クラスがあります。 maincontroller
では、fxml アノテーション in_desiredvelocity
を使用してテキストフィールド属性を定義しました。これは、main.fxml の fx:id
に適切にリンクされています。
次に、ネットワーク経由で送信する必要があるメッセージのバックボーンを定義する抽象クラス canmessage
を定義しました。
今、クラス pctovcumessage
は特定のタイプの canmessage を実装しています。 fxml プロパティ (maincontroller
で定義) にアクセスできるようにするために、抽象クラス canmessage
が maincontroller
を拡張し、pctovcumessage
が # を拡張することにしました。 ##メッセージを送信できます。
in_desiredvelocity
nullpointerException が起動されます。
######質問######
pctovcumessage (抽象クラス canmessage
を継承し、maincontroller を拡張) によって継承されますが、これをこのプロパティに追加するにはどうすればよいですか?クラス 目標を達成するためにそれを使用しますか?
######主要###:###
リーリー
メインコントローラー
:
リーリー
canmessage.java (抽象クラス canmessage
が含まれており、pctovcumessage がそれを拡張します): リーリー ######編集######
缶メッセージの形式は次のとおりです: id(hex)、data0、data1、data2、data3、...、data7。したがって、コントローラーでpcutovcumessage のコンストラクターを呼び出すときは、メッセージ 222 の ID を渡します (ちなみに、これはデバイスのデータシートで指定されています)
pcutovcumessage
では、ユーザーが GUI のテキストフィールドに値を入力して設定した fxml プロパティ
in_desiredvelocity
編集 2
異なる ID を持つ複数のメッセージが存在する可能性があるため、コントローラーの sendmessage メソッドでポリモーフィズムを使用することを考えました。さらに、コントローラー クラスから複数の fxml プロパティへのアクセスを必要とするメッセージが存在する場合があります。
これは継承の役割ではありません。継承は、
オブジェクト間の関係ではなく、
クラス
これを行う場合 リーリー
これは、mainviewcontroller
のすべてのインスタンスに、textfield
型のindesiredvelocity という名前のフィールドがあることを意味します。 これを行う場合 リーリー
これは、canmessage
のすべてのインスタンスがmainviewcontroller のインスタンスでもあることを意味します。
fxml をロードすると、
fxmlloader は
mainviewcontroller
fx:controller="canbusgui.mainviewcontroller"
があるため)、そしてインスタンス で初期化された
indesiredvelocity フィールドは、fxml で宣言されたテキスト フィールドへの参照です。
リーリー
もちろん、これにより、ID
"222" を持つ新しい
pctovcumessage インスタンスが作成されます。
pctovcumessage は
canmessage から継承するため、この新しいインスタンスは canmessage
canmessage
はmainviewcontroller# から継承するため、 # # したがって、このインスタンスは mainviewcontrollerzqbendczq のインスタンス b でもあります。
mainviewcontroller の各インスタンスにはフィールド
indesiredvelocity があるため、
pctovcumessage## のこの新しいインスタンスは#indesiredvelocity
という名前のフィールドがあり、タイプは textfield
です。
ただし、フィールドを初期化することはありません (また、そのための賢明な方法がない) ため、pctovcumessage
の indesiredvelocity<code> フィールドは null になります。
そんなことをしても意味がありません。ドメイン モデルが何であるかはよくわかりません (おそらくこの質問に答える必要はありません) が、
textfield が何らかの型のオブジェクトの一部であることは意味がありません。メッセージの.
代わりに、
pctovcumessage の一部としてこのメッセージを含むデータを送信する方が合理的かもしれません。つまり。できるよ###
リーリー
そして、コントローラー内の
を に置き換えます。
<pre class='brush:php;toolbar:false;'>new PcToVcuMessage("222", Integer.parseInt(inDesiredVelocity.getText()))</pre>
<p>然后只需从 <code>canmessage
类中删除 extends mainviewcontroller
即可。这显然完全没有意义(消息不是控制 ui 的东西)。
一些与您的代码无关的问题:
- 不要使用文本字段注册按键处理程序。要处理用户按 enter 的操作,请以通常的方式使用操作处理程序。
- 适当地命名类和变量。类名称应该是名词(它们代表事物)。
canmessage
是一个动词(或动词短语)。可能message
更合适,但我还是不太明白你在这里建模的内容。
以上がFXML アノテーション付きプロパティを適切に継承してサブクラスで使用できるようにするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1
使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









