2015-01-12 3 views
1

JavaFX 버튼에 그래픽을 추가하는 방법에 대한 온라인 리소스가 많이 있습니다.JavaFX : 아이콘이 두 개 이상인 버튼을 만드는 방법은 무엇입니까?

그러나 두 번째 (또는 임의의 숫자이지만 두 개 이상의 이미지가 아마 대부분의 상황에서 많은 의미를 갖음) 이미지를 추가하는 방법이 있는지 알고 싶습니다.

사례 : 왼쪽에 사각형 아이콘이있는 버튼과 텍스트 레이블이 차례로 있습니다. 이미지는 버튼이 연결되어있는 실제 개념 (예 : 자동차 또는 사람)을 표현한 것입니다. 일부 버튼 오른쪽에 작은 아이콘, 즉 상호 작용의 특성을 나타내는 "올바른 셰브론"을 추가하고 싶습니다.

enter image description here

I 버튼의 그래픽 노드로 전체 폭의 HBox의를 사용하고, 여기에 2 개 개의 이미지를 추가 어쩌면 생각하지만, 나는 텍스트를 넣을 수 있습니다 생각하지 않는다

그래픽 노드 맨 위.

아이디어가 있으십니까?

답변

6

아이콘과 텍스트로 사용자 정의 노드를 만들고 그래픽으로 설정하십시오. 물론 사용자 정의 그래픽 노드에 있기 때문에 버튼 텍스트를 표시하지 않습니다.

다음은 간단한 예입니다. icon1.png 및 icon2.png 파일을 제공해야합니다.

public class ButtonWithMultipleIcons extends Application { 
    @Override 
    public void start(Stage primaryStage) { 
     try { 

      Group group = new Group(); 

      Button button = new Button(); 
      button.setContentDisplay(ContentDisplay.GRAPHIC_ONLY); 

      HBox hBox = new HBox(); 

      ImageView icon1 = new ImageView(getClass().getResource("icon1.png").toExternalForm()); 
      ImageView icon2 = new ImageView(getClass().getResource("icon2.png").toExternalForm()); 

      Label label = new Label("Text"); 

      //make the button grow if you want the right icon to always be on the right of the button : 
      label.setMaxWidth(Long.MAX_VALUE); 

      HBox.setHgrow(label, Priority.ALWAYS); 


      hBox.getChildren().addAll(icon1, label, icon2); 

      button.setGraphic(hBox); 

      group.getChildren().add(button); 

      Scene scene = new Scene(group,400,400); 
      primaryStage.setScene(scene); 
      primaryStage.show(); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

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

그건 길이었습니다. 답변을 편집하고 레이블을 확장하여 오른쪽 아이콘이 항상 버튼의 오른쪽 끝에 오도록 코드를 추가했습니다. –

0

버튼에 html 서식을 사용하고 텍스트 앞뒤에 태그가있는 이미지를 추가 할 수 있습니다.

여기에 대한 자세한 정보를 얻을 수 있습니다

+0

JavaFX에서는 작동하지 않습니다. –

+0

그래, JavaFX가 아닌 Swing입니다. –

0

http://docs.oracle.com/javase/tutorial/uiswing/components/html.html 내가 함께 얻을 수있는 같은 일을했다. HBox를 사용하여 솔루션을 설명합니다. 나는 이것이 또한 최선의 방법이라고 생각한다.

다음을 수행하십시오. HBox를 사용하고 JavaFX에서 Button 클래스를 확장하여 고유 한 특정 레이아웃으로 새 CustomButton을 작성하십시오. 원하는대로 스타일을 지정하고 사용자 정의 버튼에 원하는 많은 이미지를 추가 할 수 있습니다. 어쩌면 다음과 같이 보일 수 있습니다.

public class CustomButton extends Button 
{ 
    private HBox hbox; 
    private ImageView image1; 
    private ImageView image2; 

    public CustomButton() 
    { 
     super(); 
     // Here add your specific images to global or local variables and then add all the children (images) to your HBox layout and this one to the button. 
    } 
} 

JavaFX는 일반적인 버튼을 제공하며 사용자 정의 된 구성 요소는 아닙니다. 스타일을 지정하고 싶다면 어쨌든 CSS를 사용할 수 있습니다.

관련 문제