2011-11-12 14 views

答えて

0

TabBarを定義しないでください!適切なレイアウトペインを使用してください。 javafx.scene.layout.BorderPane。詳細については

のJavaFX 2.0 API

package tabtest; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Tab; 
import javafx.scene.control.TabPane; 
import javafx.scene.layout.BorderPane; 
import javafx.stage.Stage; 

public class TabTest extends Application { 

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

    @Override 
    public void start(Stage primaryStage) { 
     BorderPane root = new BorderPane(); 
     Scene scene = new Scene(root, 300, 250); 

     TabPane tabPane = new TabPane(); 
     Tab tab1 = new Tab("Tab 1"); 
     tabPane.getTabs().add(tab1); 

     root.setBottom(tabPane); 

     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 

持っhttp://download.oracle.com/javafx/2.0/layout/jfxpub-layout.htm

FXML

package fxmltest; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 

public class FxmlTest extends Application { 

    public static void main(String[] args) { 
     Application.launch(FxmlTest.class, args); 
    } 

    @Override 
    public void start(Stage stage) throws Exception { 
     Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml")); 

     Scene scene = new Scene(root, 300, 250); 
     stage.setScene(scene); 
     stage.show(); 
    } 
} 

サンプルを見て: のJavaFX 2.0 APIとFXMLのための付属の例を探します.fxml:

<?xml version="1.0" encoding="UTF-8"?> 

<?import java.lang.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<BorderPane> 
    <bottom> 
     <TabPane> 
      <tabs> 
       <Tab text="Tab 1" /> 
      </tabs> 
     </TabPane> 
    </bottom> 
</BorderPane> 
+0

うわー。ありがとうございますが、fxmlを使用しています。これはfxmlで行うことができますか? –

+0

私はFXMLの専門家はいませんが、[this](http://download.oracle.com/javafx/2.0/fxml_get_started/jfxpub-fxml_get_started.htm)チュートリアルで回答が得られるかもしれません。 – pmoule

+0

ありがとうございます。完全な作品 –

6

スニペット次のタブの使用の側を設定するには:

TabPane tabPane = new TabPane(); 
Tab tab1 = new Tab("Tab 1"); 
tab1.setContent(new Label("Tab1 content")) 
tabPane.getTabs().add(tab1); 
tabPane.setSide(Side.BOTTOM) 

今コンテンツがタブの上にあります。

フルFXMLの一例として、また

<?xml version="1.0" encoding="UTF-8"?> 

<?import java.lang.*?> 
<?import java.util.*?> 
<?import javafx.collections.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.effect.*?> 
<?import javafx.scene.image.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.paint.*?> 
<?import javafx.scene.shape.*?> 
<?import javafx.scene.text.*?> 
<?import javafx.scene.web.*?> 

<BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="example.MainViewController"> 
    <bottom> 
    <HBox> 
     <children> 
     <Button fx:id="btnNewTab" mnemonicParsing="false" text="Add New Tab" onAction="#btnNewTabAction" /> 
     </children> 
    </HBox> 
    </bottom> 
    <center> 
    <TabPane fx:id="tabPane" side="BOTTOM"> 
     <tabs> 
     <Tab text="Untitled Tab 1"> 
      <content> 
      <AnchorPane id="Content"> 
       <Label>Content 1</Label> 
      </AnchorPane> 
      </content> 
     </Tab> 
     <Tab text="Untitled Tab 2"> 
      <content> 
      <AnchorPane id="Content"> 
       <Label>Content 2</Label> 
      </AnchorPane> 
      </content> 
     </Tab> 
     </tabs> 
    </TabPane> 
    </center> 
    <top> 
    <Label text="TabPane Example" /> 
    </top> 
</BorderPane> 

メインクラス:

package example; 

import java.io.File; 
import java.io.IOException; 
import java.net.URL; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.fxml.JavaFXBuilderFactory; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 

public class ExampleMain extends Application { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     Application.launch(ExampleMain.class, args); 
    } 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     URL location = ExampleMain.class.getResource("MainView.fxml"); 

     FXMLLoader fxmlLoader = new FXMLLoader(); 
     fxmlLoader.setLocation(location); 
     fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory()); 

     try { 
      Parent root = (Parent) fxmlLoader.load(location.openStream()); 

      // in case you need access to the controller 
      MainViewController mainViewController = fxmlLoader.getController(); 

      primaryStage.setScene(new Scene(root, 1024, 768)); 
      Scene s = primaryStage.getScene(); 
      s.setRoot(root); 
      primaryStage.sizeToScene(); 
      primaryStage.show(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

とコントローラ:

package example; 

import javafx.fxml.FXML; 
import javafx.scene.control.Label; 
import javafx.scene.control.Tab; 
import javafx.scene.control.TabPane; 

public class MainViewController { 

    private static int counter = 0; 

    @FXML 
    private TabPane tabPane; 

    @FXML 
    public void btnNewTabAction() { 
     Tab tab = new Tab(); 
     tab.setText("new Tab " + ++counter); 
     tab.setContent(new Label("Content of new tab " + counter)); 
     tabPane.getTabs().add(tab); 
    } 
} 

あなたが例で見ることができるよう、FXMLがありますJavaクラスのxml表現。クラスにプロパティ側(getSide、setSide)がある場合、クラスはfxmlに属性側を持ちます。だから、あなたはfxmlで利用できる属性を見つけるためにAPIドキュメントを読むことができます。

これが役に立ちます。

+0

あなたは私の答えについて、絶対に正しいですよ、ありがとう! FXMLの問題を解決するための適切な例を教えてください。 – pmoule