2014-12-07 2 views
4

나는 아주 간단한 계산기를 만들고 있는데,이 버튼 주변의 패딩이 어디에서 오는지 알 수 없다.JavaFX 버튼 채우기를 제거 하시겠습니까?

: 그것은 나에게이 준

private FlowPane addFlowPaneRightSide() { 

    FlowPane flow = new FlowPane(); 
    //flow.setPadding(new Insets(0, 0, 0, 0)); 
    flow.setVgap(0); 
    flow.setHgap(0); 
    flow.setPrefWrapLength(WIDTH_OF_CENTER/3); // width of function buttons 
    flow.setStyle("-fx-background-color: 978c87;"); 

    // setup arrays to hold the buttons and images for the right column 
    Button operatorButtons[] = new Button[NUM_OP_BUTTONS]; 
    ImageView operatorImages[] = new ImageView[NUM_OP_BUTTONS]; 

    for (int i=0; i < NUM_OP_BUTTONS; i++) { 
     operatorImages[i] = new ImageView(
       new Image(Calculator.class.getResourceAsStream(
       "images/orange-"+(i)+".png"))); 
     operatorButtons[i] = new Button(); 
     operatorButtons[i].setGraphic(operatorImages[i]); 
     operatorButtons[i].setId("orange-"+(i)); 
     flow.getChildren().add(operatorButtons[i]); 
    } 

    return flow; 
} 

난 그냥 루프에 버튼을 만드는 시작했다대로 빨리 잘 작동하지만 흐름 창에 이미지를 넣고 있었어요 : 여기에 내가 흐름 창을 건물입니다 방법 Just imagine a Yosemite Calculator but with about 10-ish pixels between each button on the calculator.

내 CSS :

/* 
    Document : stylesheet.css 
    for Calculator project in JavaFX 
*/ 

.root{ 
    -fx-font-size: 14pt; 
    -fx-font-family: "Tahoma"; 
} 

.button{ 
    -fx-text-fill: #006464; 
    -fx-skin: "com.sun.javafx.scene.control.skin.ButtonSkin"; 
    /*-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;*/ 
    -fx-background-color: transparent; 
    -fx-background-insets: 0 0 0 0, 0, 0, 0; 
    -fx-background-radius: 0 0 0 0, 0, 0, 0; 
    -fx-border-width: 0 0 0 0, 0, 0, 0; 
} 

.button:focused { 
    -fx-color: -fx-focused-base; 
    /*-fx-background-color: -fx-focus-color, -fx-outer-border, -fx-inner-border, -fx-body-color;*/ 
    -fx-background-color: transparent; 
    -fx-background-insets: 0 0 0 0, 0, 0, 0; 
    -fx-background-radius: 0 0 0 0, 0, 0, 0; 
    -fx-border-width: 0 0 0 0, 0, 0, 0; 
} 

그리고 마지막으로 전체 프로그램 :

package calculator; 


import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.stage.Stage; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.geometry.VPos; 
import javafx.scene.Scene; 
import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.FlowPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Priority; 
import javafx.scene.shape.Rectangle; 
import javafx.scene.text.Font; 
import javafx.scene.text.FontWeight; 
import javafx.scene.text.Text; 

/** 
* 
* @author Jim Lohse 
*/ 
public class Calculator extends Application { 

    public final int CALC_WIDTH = 500; 
    public final int CALC_HEIGHT = 642; 
    public final int NUM_BUTTONS = 15; 
    public final int NUM_OP_BUTTONS = 5; 
    public final int WIDTH_OF_CENTER = 354; 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

     @Override 
    public void start(Stage stage) { 

// Use a border pane as the root for scene 
     BorderPane border = new BorderPane(); 

     HBox hbox = addHBox(); 
     border.setTop(hbox); 

     border.setRight(addFlowPaneRightSide()); 

     border.setCenter(addFlowPaneCenter()); 

     Scene scene = new Scene(border, CALC_WIDTH, CALC_HEIGHT); 
     scene.getStylesheets().add("calculator/stylesheet.css"); 
     stage.setScene(scene); 
     stage.setTitle("Calculator"); 
     stage.setResizable(false); 
     stage.show(); 
    } 

/* 
* Creates an HBox with two buttons for the top region 
*/ 

    private HBox addHBox() { 

     HBox hbox = new HBox(); 
     hbox.setPadding(new Insets(15, 12, 15, 12)); 
     hbox.setSpacing(10); // Gap between nodes 
     hbox.setStyle("-fx-background-color: #336699;"); 

     Button buttonCurrent = new Button("Current"); 
     buttonCurrent.setPrefSize(100, 20); 

     Button buttonProjected = new Button("Projected"); 
     buttonProjected.setPrefSize(100, 20); 

     hbox.getChildren().addAll(buttonCurrent, buttonProjected); 

     return hbox; 
    } 

/* 
* Creates a horizontal flow pane with the orange operations buttons 
*/ 
    private FlowPane addFlowPaneRightSide() { 

     FlowPane flow = new FlowPane(); 
     //flow.setPadding(new Insets(0, 0, 0, 0)); 
     flow.setVgap(0); 
     flow.setHgap(0); 
     flow.setPrefWrapLength(WIDTH_OF_CENTER/3); // width of function buttons 

     // setup arrays to hold the buttons and images for the right column 
     Button operatorButtons[] = new Button[NUM_OP_BUTTONS]; 
     ImageView operatorImages[] = new ImageView[NUM_OP_BUTTONS]; 

     for (int i=0; i < NUM_OP_BUTTONS; i++) { 
      operatorImages[i] = new ImageView(
        new Image(Calculator.class.getResourceAsStream(
        "images/orange-"+(i)+".png"))); 
      operatorButtons[i] = new Button(); 
      operatorButtons[i].setGraphic(operatorImages[i]); 
      operatorButtons[i].setId("orange-"+(i)); 
      flow.getChildren().add(operatorButtons[i]); 
     } 

     return flow; 
    } 

    /* 
* Creates a horizontal flow pane with the orange operations buttons 
*/ 
    private FlowPane addFlowPaneCenter() { 

     FlowPane flow = new FlowPane(); 
     //flow.setPadding(new Insets(0, 0, 0, 0)); 
     flow.setVgap(0); 
     flow.setHgap(0); 
     flow.setPrefWrapLength(WIDTH_OF_CENTER); // width of function buttons 

     Button centerButtons[] = new Button[NUM_BUTTONS]; 
     ImageView centerImages[] = new ImageView[NUM_BUTTONS]; 
     for (int i=0; i < NUM_BUTTONS; i++) { 
      centerImages[i] = new ImageView(
        new Image(Calculator.class.getResourceAsStream(
        "images/button-"+(i)+".png"))); 
      centerButtons[i] = new Button(); 
      centerButtons[i].setGraphic(centerImages[i]); 
      centerButtons[i].setId("button-"+(i)); 
      flow.getChildren().add(centerButtons[i]); 
     } 

     return flow; 
    } 
} 
+0

아, 게시물을 만들 때, 나는 CALC_WIDTH = 475를 변경했는데 차이점이 없다. 그것은 버튼의 폭이다. – JimLohse

+0

오늘 밤에는 취업자가없고 취침하려고합니다. 가치가있는 것을 위해 계산기는 크기가 고정되어 있어야하므로 크기를 조정하거나이 프로젝트의 버튼을 걱정하지 않아도됩니다. 어떤 조언을 주셔서 감사합니다! – JimLohse

답변

8

사용중인 이미지의 복사본이 없어서 어떻게 보이는지 알 수 없습니다. 그러나 나는 사각형의 그림으로 시도 할 것이다. 저를 얻을 수

:

This here

이제, 당신이 설명하는대로 내가 볼 수있는에서 버튼들 사이에 실제 패딩이 없습니다. 제 생각에는 레이블 영역 자체에 문제가있는 패딩이 있습니다. 이것은 수정하기가 매우 쉽습니다. I이 고정 방법

Fixed version

들이 만들어지고 있었던 것에 따라 각 버튼의 코드 라인 ( ㅋ [I]를 .setPadding (Insets.EMPTY))를 추가로했다.

for (int i=0; i < NUM_OP_BUTTONS; i++) { 
    operatorImages[i] = new ImageView(
      new Image(Java.class.getResourceAsStream(
        "art" + File.separator + "Square.png"))); 
    operatorButtons[i] = new Button(); 
    operatorButtons[i].setGraphic(operatorImages[i]); 
    operatorButtons[i].setPadding(Insets.EMPTY); 
    operatorButtons[i].setId("orange-"+(i)); 
    flow.getChildren().add(operatorButtons[i]); 
} 

for (int i=0; i < NUM_BUTTONS; i++) { 
    centerImages[i] = new ImageView(
      new Image(Java.class.getResourceAsStream(
        "art" + File.separator + "Square.png"))); 
    centerButtons[i] = new Button(); 
    centerButtons[i].setGraphic(centerImages[i]); 
    centerButtons[i].setPadding(Insets.EMPTY); 
    centerButtons[i].setId("button-"+(i)); 
    flow.getChildren().add(centerButtons[i]); 
} 

은 당신의 작은 문제를 해결해야한다.

EDIT : 당신이 보는 공백의 작은 비트는 이미지 자체의 일부이며 패딩이 아닙니다.

+0

감사합니다. 내 게시물에이 링크가 있습니다. http://i.imgur.com/91fHMOc.jpg 패딩이 아래쪽에 있었는데 재미 있었는지 어떻게 귀하의 버전에 올라오지 않았습니까? 내가 다시 한번 살펴보고 조금만 돌아와 보자. – JimLohse

+2

정말 감사합니다 !!!!! .setPadding (Insets.EMPTY)으로 라인을 추가하는 것은 트릭을 만들었습니다! – JimLohse