Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将项目添加到JavaFX上的选项卡中?_Java_Javafx_Tabs_Tableview - Fatal编程技术网

如何将项目添加到JavaFX上的选项卡中?

如何将项目添加到JavaFX上的选项卡中?,java,javafx,tabs,tableview,Java,Javafx,Tabs,Tableview,如何在TabPane的第一个选项卡中添加标签。我是JavaFX新手,但swing完全不同。我不熟悉这个术语。窗格本质上是JPanel吗?还是一场戏 这是我的类,我试图在我的选项卡中添加一个表,但我无法使其显示 import java.io.IOException; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Pos; impor

如何在TabPane的第一个选项卡中添加标签。我是JavaFX新手,但swing完全不同。我不熟悉这个术语。窗格本质上是JPanel吗?还是一场戏

这是我的类,我试图在我的选项卡中添加一个表,但我无法使其显示

import java.io.IOException;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;


public class Viewer {

private Scene mainScene;
private MenuBar menubar;
private Menu menu;
private MenuItem menuItem, menuItem2, menuItem3;
private TableView table, table2;
private ScrollPane scroll;
private Pane npcPane, itemPane;

public Viewer() {

}

public Scene mainScene() {
    BorderPane layout = new BorderPane();
    BorderPane tabLayout = new BorderPane();
    Label label = new Label("Test");
    mainScene = new Scene(layout, 400, 600);

    TabPane tabPane = new TabPane();
    Tab tab = new Tab("Item");
    tab.setClosable(false);
    tab.setContent(tabLayout);
    tabPane.getTabs().add(tab);

    tabLayout.getChildren().add(label);

    layout.setCenter(tabPane);

    return mainScene;
}

private Node npcContent(){
    BorderPane layout = new BorderPane();
    npcPane = new Pane();

    TableColumn<NPC, Integer> idColumn = new TableColumn<>("ID:");
    idColumn.setMinWidth(100);
    idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));

    TableColumn<NPC, String> nameColumn = new TableColumn<>("Name:");
    nameColumn.setMinWidth(250);
    nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));

    table = new TableView<NPC>();
    table.setItems(getNpcs());
    table.getColumns().addAll(idColumn, nameColumn);

    scroll = new ScrollPane(table);
    layout.setCenter(scroll);
    return npcPane;
}

private Node itemContent() {
    itemPane = new Pane();

    TableColumn<Item, Integer> idColumn = new TableColumn<>("ID:");
    idColumn.setMinWidth(100);
    idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));

    TableColumn<Item, String> nameColumn = new TableColumn<>("Name:");
    nameColumn.setMinWidth(250);
    nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));

    table = new TableView<Item>();
    table.setItems(getItems());
    table.getColumns().addAll(idColumn, nameColumn);

    scroll = new ScrollPane(table);


    itemPane.getChildren().addAll(scroll);
    itemPane.setMinSize(500, 500);

    return itemPane;
}

public ObservableList<NPC> getNpcs() {
    ObservableList<NPC> npcs = FXCollections.observableArrayList();

    ReadFile readFile = new ReadFile("./lists/npclist.txt");
    try {
        String[] npcList = readFile.openNPCFile();

        for(NPC npc : ReadFile.npcs) {
            if (npc != null) {
                npcs.add(new NPC(npc.getId(), npc.getName()));
            }
        }

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

    return npcs;
}

public ObservableList<Item> getItems() {
    ObservableList<Item> items = FXCollections.observableArrayList();

    ReadFile readFile = new ReadFile("./lists/itemlist.txt");
    try {
        String[] itemList = readFile.openNPCFile();

        for(Item item : ReadFile.items) {
            if (item != null) {
                items.add(new Item(item.getId(), item.getName()));
            }
        }

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

    return items;
}

}
import java.io.IOException;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.geometry.Pos;
导入javafx.scene.Node;
导入javafx.scene.scene;
导入javafx.scene.control.Label;
导入javafx.scene.control.Menu;
导入javafx.scene.control.MenuBar;
导入javafx.scene.control.MenuItem;
导入javafx.scene.control.ScrollPane;
导入javafx.scene.control.Tab;
导入javafx.scene.control.TabPane;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.scene.control.cell.PropertyValueFactory;
导入javafx.scene.layout.BorderPane;
导入javafx.scene.layout.Pane;
公共类查看器{
私密场景;
私人菜单栏菜单栏;
私人菜单;
私有菜单项菜单项、菜单项2、菜单项3;
专用TableView表,表2;
私人卷轴;
专用窗格npcPane、项目窗格;
公众观众(){
}
公共场景主场景(){
BorderPane布局=新建BorderPane();
BorderPane tabLayout=新建BorderPane();
标签=新标签(“测试”);
主场景=新场景(布局,400600);
TabPane TabPane=新建TabPane();
Tab Tab=新选项卡(“项目”);
tab.setClosable(false);
tab.设置内容(tabLayout);
tabPane.getTabs().add(tab);
tabLayout.getChildren().add(标签);
布局。设置中心(选项卡窗格);
返回主场景;
}
专用节点npcContent(){
BorderPane布局=新建BorderPane();
npcPane=新窗格();
TableColumn idColumn=新的TableColumn(“ID:”);
idColumn.setMinWidth(100);
idColumn.setCellValueFactory(新属性ValueFactory(“id”);
TableColumn nameColumn=新的TableColumn(“名称:”);
nameColumn.setMinWidth(250);
nameColumn.setCellValueFactory(新属性ValueFactory(“名称”);
table=新的TableView();
表.setItems(getNpcs());
table.getColumns().addAll(idColumn,nameColumn);
滚动=新滚动窗格(表格);
布局。设置中心(滚动);
返回npcPane;
}
私有节点itemContent(){
itemPane=新窗格();
TableColumn idColumn=新的TableColumn(“ID:”);
idColumn.setMinWidth(100);
idColumn.setCellValueFactory(新属性ValueFactory(“id”);
TableColumn nameColumn=新的TableColumn(“名称:”);
nameColumn.setMinWidth(250);
nameColumn.setCellValueFactory(新属性ValueFactory(“名称”);
table=新的TableView();
table.setItems(getItems());
table.getColumns().addAll(idColumn,nameColumn);
滚动=新滚动窗格(表格);
itemPane.getChildren().addAll(滚动);
itemPane.setMinSize(500500);
返回项目窗格;
}
公共可观察列表getNpcs(){
ObservableList npcs=FXCollections.observableArrayList();
ReadFile ReadFile=新的ReadFile(“./lists/npclist.txt”);
试一试{
字符串[]npcList=readFile.openNPCFile();
for(NPC-NPC:ReadFile.npcs){
如果(npc!=null){
add(新的NPC(NPC.getId(),NPC.getName());
}
}
}捕获(IOE异常){
e、 printStackTrace();
}
返回NPC;
}
公共可观察列表getItems(){
ObservableList items=FXCollections.observableArrayList();
ReadFile ReadFile=newreadfile(“./lists/itemlist.txt”);
试一试{
String[]itemList=readFile.openNPCFile();
用于(项:ReadFile.items){
如果(项!=null){
添加(新项(Item.getId(),Item.getName());
}
}
}捕获(IOE异常){
e、 printStackTrace();
}
退货项目;
}
}

要回答您的问题,您的
布局
是您的
阶段的父
节点

mainScene = new Scene(layout, 400, 600);
您的
选项卡窗格
是节点层次结构中的下一个,它是您的
布局
子节点,默认情况下,
边框窗格
根据其内容或子节点的大小(如果未显式设置)计算此范围,从不设置
边框窗格
&
选项卡窗格
&
标签的大小
只设置舞台将自动使用的场景大小。因此,要解决您的问题,请实施此方法 在您拥有的每个
节点
中,FX可以知道如何在其各自的父节点中定位您的
节点


希望对使用
tabobj.setContent(node)有所帮助

您可以在选项卡中添加任何控件或布局。

但是选项卡窗格是否显示?不,我不这么认为。它对您有帮助吗,先生?如果是这样,您可以接受并向上投票,如果您想更改任何节点(如窗格、锚网或任何使用setPrefHeight或setPrefSize扩展区域的节点)的大小,您可以询问是否有更多问题谢谢,还有一个问题我如何更改tableview的大小?我是否要更改场景的大小?没有,先生,请更改tableview本身的大小,
tableview.setPrefHeight()
因为高度和宽度是
tableview.setPrefWidth()
使用任何节点的大小,更改场景的大小可能不会自动更改孩子的大小@7Winds顺便问一下,这样做有效吗?如果是,接受它