PHP 편집자 Xiaoxin이 Java Q&A 문제를 소개합니다: FXML 주석이 달린 속성을 올바르게 상속하여 서브클래스에서 사용할 수 있게 만드는 방법은 무엇입니까? Java 개발에서 FXML 주석이 달린 속성을 올바르게 상속하는 것은 일반적인 문제이며 개발 프로세스 중에 주의가 필요한 사항입니다. 아래에서는 이 문제를 더 잘 해결하는 데 도움이 되도록 주석이 달린 속성을 올바르게 상속하고 이를 하위 클래스에서 사용할 수 있게 만드는 방법에 대해 자세히 설명합니다.
질문
javafx를 사용하여 생성된 GUI를 통한 사용자 입력을 기반으로 메시지가 작성되는 컨트롤러 영역 네트워크를 통해 메시지 전송을 구현하려고 합니다.
main.fxml에 대한 링크가 있습니다 maincontroller
类。在 maincontroller
中,我定义了一个带 fxml 注释的 textfield 属性 in_desiredvelocity
,该属性正确链接到 main.fxml 中的 fx:id
.
그런 다음 네트워크를 통해 전송되어야 하는 메시지의 백본을 정의하는 추상 클래스canmessage
를 정의했습니다.
이제 클래스 pctovcumessage
实现了特定类型的 canmessage。为了能够访问 fxml 属性(在 maincontroller
中定义),我决定抽象类 canmessage
扩展 maincontroller
,而 pctovcumessage
扩展 canmessage
는 특정 유형의 메시지를 구현합니다. fxml 속성(maincontroller
에 정의됨)에 액세스할 수 있도록 추상 클래스
maincontroller
를 확장하고 는 in_desiredvelocity
nullpointerexception
를 확장하기로 결정했습니다.
애플리케이션이 올바르게 컴파일되지만 GUI를 입력하면 텍스트 필드가 실행됩니다 .
질문pctovcumessage
继承的(它继承自抽象类 canmessage
并且扩展了 maincontroller
위의 fxml 속성은 (추상 클래스 에서 상속되고 maincontroller
확장)에 상속되지만, 이 클래스에서 이를 어떻게 사용하여 목표를 달성할 수 있습니까?
메인:
으아악마스터 컨트롤러:canmessage
和 pctovcumessage
으아악
canmessage.java(추상 클래스 및
확장이 포함되어 있음):
으아악
pcutovcumessage
pcutovcumessage
中,我需要访问 fxml 属性 in_desiredvelocity
생성자를 호출하면 메시지 222의 ID를 전달합니다(btw는 장치의 데이터시트에 지정되어 있음) In
GUI의 텍스트 필드에 값을 입력하여 사용자가 설정한 fxml 속성in_desiredvelocity
에 액세스해야 합니다. 이렇게 하면 사용자가 입력한 값을 검색하여 메시지.
다른 ID를 가진 여러 메시지가 있을 수 있으므로 컨트롤러의 sendmessage 메서드에서 다형성을 사용하는 것을 생각했습니다. 또한 컨트롤러 클래스의 여러 fxml 속성에 액세스해야 하는 메시지가 있을 수 있습니다. Solution
이것은 상속이 하는 일이 전혀 아닙니다. 상속은객체
간의 관계가 아니라클래스mainviewcontroller
的每个实例都会有一个名为 indesiredvelocity
的字段,其类型为 textfield
간의 관계입니다.
이럴 때
으아악이것은 canmessage
的每个实例也是 mainviewcontroller
을 의미합니다.
이럴 때fxmlloader
会创建 mainviewcontroller
的实例(因为 fxml 中有 fx:controller="canbusgui.mainviewcontroller"
),并在该实例中初始化 indesiredvelocity
으아악
즉, 의 모든 인스턴스는 mainviewcontroller
의 인스턴스이기도 합니다.
fxml을 로드할 때
필드pctovcumessage
实例,其 id 为 "222"
。由于 pctovcumessage
继承自 canmessage
,因此该新实例也是 canmessage
的实例,并且由于 canmessage
继承自 mainviewcontroller
,因此该实例也是 mainviewcontrollerzqbendczq 的实例b,由于 <code>mainviewcontroller
的每个实例都有一个字段 indesiredvelocity
,因此 pctovcumessage
的这个新实例有一个名为 indesiredvelocity
的字段,类型为 textfield
fxml에 선언된 텍스트 필드에 대한 참조입니다.
나중에 컨트롤러에서 이 작업을 수행하게 됩니다pctovcumessage
中的 indesiredvelocity
으아악
"222"
인 새 인스턴스가 생성됩니다. textfield
는
의 인스턴스이기도 하며, pctovcumessage
는 mainviewcontroller
에서 상속되므로 mainviewcontroller
이므로 이 인스턴스는 mainviewcontrollerzqbendczq의 인스턴스이기도 합니다. > 각 인스턴스에는 <code>indesiredvelocity
필드가 있으므로
유형의 indesiredvelocity
라는 필드가 있습니다. new pctovcumessage("222")
new PcToVcuMessage("222", Integer.parseInt(inDesiredVelocity.getText()))
然后只需从 canmessage
类中删除 extends mainviewcontroller
即可。这显然完全没有意义(消息不是控制 ui 的东西)。
一些与您的代码无关的问题:
canmessage
是一个动词(或动词短语)。可能 message
更合适,但我还是不太明白你在这里建模的内容。위 내용은 FXML 주석이 달린 속성을 올바르게 상속하여 하위 클래스에서 사용할 수 있도록 하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!