2013-10-14 5 views
2

Netbeans 7.3.1을 사용하는 JavaFX를 처음 사용하고 현재 메뉴로 작업하고 있습니다. 나는 "java Fx 2.0 Introduction by example"이라는 책을 읽고 다음과 같은 오류가 발생했을 때 책에서 메뉴 예제를 시험해 보았다.Java FX 메뉴의 오류

constructor 클래스 메뉴의 메뉴는 주어진 유형에 적용 할 수 없다.
필요 : 인수
를 찾을 수 없습니다 : 문자열
이유 : 실제와 형식 인수 목록은 여기

길이

에 차이가 내 코드, 그것은 지금까지 내 자바 FX 지식에 관한 모든 주요 자바 FX를 포함대로 올바른입니다 메뉴 수입! "Menu"생성자가 문자열을 매개 변수로 사용하지 않는 이유는 무엇입니까? 도와주세요!!

javafx.scene.control.Menu menu = new javafx.scene.control.Menu("File"); 

아니면 메뉴 다른 이름을 지정 :

package menu; 
import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.control.MenuBar; 
import javafx.scene.control.MenuItem; 
import javafx.scene.control.SeparatorMenuItem; 
import javafx.stage.Stage; 
public class Menu extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     Group root = new Group(); 
     Scene scene = new Scene(root, 300, 250); 
     primaryStage.setTitle("Hello World!"); 
     MenuBar menuBar = new MenuBar(); 
     Menu menu = new Menu("File");//This line is giving errors.. 
     menu.getItems().add(new MenuItem("New")); 
     menu.getItems().add(new MenuItem("Save")); 
     menu.getItems().add(new SeparatorMenuItem()); 
     menu.getItems().add(new MenuItem("Exit")); 
     menuBar.getMenus().add(menu); 
     root.getChildren().add(menuBar); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+1

Uluk의 대답은 정확하지만 Menu에서이 클래스의 이름을 좀 더 구체적으로 변경하는 것이 좋습니다. 적어도 핵심 클래스 이름은 아닌 것입니다. – OttPrime

+1

JavaFX에서 표준 클래스로 이미 정의 된 클래스에는 이름을 사용하지 마십시오. 문제는 이름 충돌이었습니다. –

답변

4

당신이 인스턴스화하는 메뉴

menu.Menu // which extends javafx.​application.Application and defined by you, i.e. it is 
menu.Menu menu = new menu.Menu("File"); 

가 대신 자바 FX 메뉴의 전체 경로를 지정합니다. 예 : MyAwesomeMenu :).

+0

감사합니다. UR 아이디어! 그건 그렇고, 왜 내가 왜 그 일을했는지, 그리고 왜 내 것이 안했는지 모르겠다. javafx.scene.control import를 더 일찍 포함시켰다. 왜 내 코드에 다시 포함시켜야 할 필요가 있느냐? –

+1

@AnkurSaha. 아니, javafx.scene.control.Menu를 가져 오지 않았습니다. 질문에서 해당 코드를 참조하십시오. 클래스 이름 충돌이 있었고, 하나는 JavaFX 클래스입니다 ** Menu **, 같은 이름을 가진 또 다른 이름은 응용 프로그램의 기본 클래스입니다 ** Menu **. JavaFX 메뉴를 가져 오지 않았고 Menu 클래스가 자체 클래스 정의에 있기 때문에 가져올 필요가 없으므로 인스턴스화 된 메뉴는 패키지 메뉴에서 만들고 정의한 메뉴로 취급됩니다. 가장 좋은 해결책은 클래스 이름을 특정 이름으로 변경하는 것입니다. –