2017-02-27 7 views
0

よく私はJavaFxを初めて使っていて、本当に長い時間Javaを使用していないので、多くの問題があります。そして、最大の方法は気が狂ったペインのbgを変更する方法です。以下通常のペインのスタイルを変更する方法(レイアウトペインではない)

コントローラクラスは、以下

//Styling prePane 
public class Controller { 


//Declaring elements 
public Pane prePane; 
public Button generate; 
public TextArea info; 
@FXML 
ProgressBar progressBar; 


public void onGenerate() throws IOException { 

    //Styling prePane 
    prePane=new Pane(); 
    prePane.getStyleClass().add("prePane"); 


    //Creating and embedding progressBar 
    generate.setDisable(true); 
    progressBar.setProgress(0); 


    //Creating task object 
    Task copyWorker = createWorker(); 
    progressBar.progressProperty().unbind(); 
    progressBar.progressProperty().bind(copyWorker.progressProperty()); 
    copyWorker.messageProperty().addListener(new ChangeListener<String>() { 
     @Override 
     public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
      System.out.println(newValue); 
     } 
    }); 


    //Starting task thread 
    new Thread(copyWorker).start(); 


    //QR Code generation 
    String details; 
    info.getParagraphs(); 
    details=String.valueOf(info.getText()); 
    ByteArrayOutputStream out= net.glxn.qrgen.QRCode.from(details).to(ImageType.GIF).stream(); 
    File file=new File("D:\\JavaFXQRGenerator-master\\QrGenerator\\QrCode\\details.jpg"); 
    FileOutputStream fos=new FileOutputStream(file); 
    fos.write(out.toByteArray()); 
    fos.flush(); 
} 


//Defining the task 
public Task createWorker() { 
    return new Task() { 
     @Override 
     protected Object call() throws Exception { 
      for (int i = 0; i < 10; i++) { 
       updateProgress(i + 1, 10); 
      } 
      return true; 
     } 
    }; 
} 

}

メインクラス

public class Main extends Application { 

@Override 
public void start(Stage primaryStage) throws Exception{ 
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml")); 
    primaryStage.setTitle("QR Generator"); 
    primaryStage.setScene(new Scene(root, 300, 275)); 
    primaryStage.show(); 
} 


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

}

あります実際のスタイルシート

.prePane{ 
     -fx-background-image: url("D:\JavaFXQRGenerator-master\QrGenerator\resources\genPane.jpg"); 
} 

どんな種類のヘルプがありがとうございます。

+0

どこのコントロールを作成しましたか?そうでなければ、 'new Label();'をコードのどこかに追加してみてください。 –

+0

理由を説明できますか? –

+0

CSSは、 'Control'(またはサブクラス)のインスタンスが作成されるまで(デフォルトで)適用されません。これについての質問がどこかにありますが、私は簡単な検索でそれを見つけることはできません。 –

答えて

0

resourcesフォルダがビルドパスの一部であると仮定すると、genPane.jpgはクラスパスのルートにあります。したがって、正しいパスはCSS documentationになります。

.prePane{ 
     -fx-background-image: url("/genPane.jpg"); 
} 
+0

残念ですが、私はすでに試してみましたが、まだ動作しません。しかし、私はこの長い間、私の要求に固執してくれてありがとう。 –

関連する問題