Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Charts 调整JavaFX图表的高度、宽度_Charts_Height_Width_Javafx - Fatal编程技术网

Charts 调整JavaFX图表的高度、宽度

Charts 调整JavaFX图表的高度、宽度,charts,height,width,javafx,Charts,Height,Width,Javafx,我是Java新手,有PHP、HTML和CSS方面的经验。当我试图更改图表在窗口中占据的宽度和高度时,NetBeans会给我错误信息: 错误:setWidth(double)在区域图表中具有受保护的访问权限。setWidth(450) 我搜索了javafx文档,发现宽度/高度与区域绑定,但我不确定代码中的内容,我尝试了一些方法,但没有找到它 我相信这很简单 事先谢谢你,布拉德 package test; import javafx.application.Application; import

我是Java新手,有PHP、HTML和CSS方面的经验。当我试图更改图表在窗口中占据的宽度和高度时,NetBeans会给我错误信息:

错误:setWidth(double)在区域图表中具有受保护的访问权限。setWidth(450)

我搜索了javafx文档,发现宽度/高度与区域绑定,但我不确定代码中的内容,我尝试了一些方法,但没有找到它

我相信这很简单

事先谢谢你,布拉德

package test;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.shape.Rectangle;

public class Test extends Application {



    private void init(Stage primaryStage) {
        Group root = new Group();
        primaryStage.setScene(new Scene(root,1000,1000));

        root.getStylesheets().add("test/Chart.css");

        Rectangle rect = new Rectangle(35,70); 
        rect.setLayoutX(30); 
        rect.setLayoutY(30);
        rect.getStyleClass().add("my-rect");

        NumberAxis xAxis = new NumberAxis("X Axis", -24d, 24.0d, 2.0d);
        NumberAxis yAxis = new NumberAxis("Y Axis", -24.0d, 24.0d, 1.0d);

        ObservableList<XYChart.Series> data = FXCollections.observableArrayList(
            new ScatterChart.Series("Series 1", FXCollections.<ScatterChart.Data>observableArrayList(
                new XYChart.Data(0.2, 3.5),
                new XYChart.Data(0.7, 4.6),
                new XYChart.Data(1.8, 1.7),
                new XYChart.Data(2.1, 2.8),
                new XYChart.Data(4.0, 2.2),
                new XYChart.Data(4.1, 2.6),
                new XYChart.Data(4.5, 2.0),
                new XYChart.Data(6.0, 3.0),
                new XYChart.Data(7.0, 2.0),
                new XYChart.Data(7.8, 4.0)
            )),
            new ScatterChart.Series("Series 2", FXCollections.<ScatterChart.Data>observableArrayList(
                new XYChart.Data(6.2,3.0),
                new XYChart.Data(6.0,4.0),
                new XYChart.Data(5.8,5.0)
            ))    
        );
        ScatterChart chart = new ScatterChart(xAxis, yAxis, data);
        chart.setWidth(450);
        chart.setHeight(450);

        chart.setLayoutX(250);
        chart.setLayoutY(250);



        root.getChildren().addAll(chart,rect);
    }

    @Override public void start(Stage primaryStage) throws Exception {
        init(primaryStage);
        primaryStage.show();
    }
    public static void main(String[] args) { launch(args); }
}
封装测试;
导入javafx.application.application;
导入javafx.scene.Group;
导入javafx.scene.scene;
导入javafx.stage.stage;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.scene.chart.ScatterChart;
导入javafx.scene.chart.XYChart;
导入javafx.scene.chart.NumberAxis;
导入javafx.scene.shape.Rectangle;
公共类测试扩展了应用程序{
私有void init(阶段primaryStage){
组根=新组();
设置场景(新场景(根,10001000));
root.getStylesheets().add(“test/Chart.css”);
矩形rect=新矩形(35,70);
矩形setLayoutX(30);
直视布局(30);
rect.getStyleClass().add(“我的rect”);
NumberAxis xAxis=新的NumberAxis(“X轴”、-24d、24.0d、2.0d);
NumberAxis yAxis=新的NumberAxis(“Y轴”、-24.0d、24.0d、1.0d);
ObservableList data=FXCollections.observableArrayList(
新的散点图系列(“系列1”,FXCollections.observableArrayList(
新XYChart.数据(0.2,3.5),
新XYChart.数据(0.7,4.6),
新XYChart.数据(1.8,1.7),
新XYChart.数据(2.1,2.8),
新的XYChart.数据(4.0,2.2),
新XYChart.数据(4.1,2.6),
新XYChart.数据(4.5,2.0),
新的XYChart.数据(6.0,3.0),
新的XYChart.数据(7.0,2.0),
新的XYChart.Data(7.8,4.0)
)),
新的散点图系列(“系列2”,FXCollections.observableArrayList(
新XYChart.数据(6.2,3.0),
新XYChart.数据(6.0,4.0),
新XYChart.数据(5.8,5.0)
))    
);
散点图=新散点图(X轴、Y轴、数据);
图表.设置宽度(450);
图表.设置高度(450);
图表.setLayoutX(250);
图.setLayoutY(250);
root.getChildren().addAll(chart,rect);
}
@覆盖公共无效开始(阶段primaryStage)引发异常{
初始阶段;
primaryStage.show();
}
公共静态void main(字符串[]args){launch(args);}
}

ScatterChart.getHeight()的javadoc(它又是
Region.getHeight()
)说

获取属性高度的值。
属性描述:
此可调整大小的节点的高度。此属性由区域的 布局期间的父级,应用程序可能无法设置。如果 应用程序需要显式控制区域的大小 应通过设置最小高度来覆盖其首选大小范围, prefHeightmaxHeight属性

也就是说,您可以通过以下方式调整和约束任何图表的大小:

ScatterChart.setPrefHeight(double)
ScatterChart.setMinHeight(double)
ScatterChart.setMaxHeight(double)

ScatterChart.setPrefWidth(double)
ScatterChart.setMinWidth(double)
ScatterChart.setMaxWidth(double)

ScatterChart.setPrefSize(double, double)
ScatterChart.setMinSize(double, double)
ScatterChart.setMaxSize(double, double)

是否有一种方法可以将图表的高度绑定到另一个图表,这样当图表a被缩放时,图表B会自动缩放?@SDS,是的,请尝试chartB.prefHeightProperty().bind(chartA.heightProperty())@UlukBiy prefHeight并不总是强制它。我在寻找一种总是强制的约束。ChartB应该始终是ChartA高度的1/3(以像素为单位)。我尝试了chartB.prefHeightProperty().bind(chartA.heightProperty().multiply(0.333));chartB.minHeightProperty().bind(chartA.heightProperty().multiply(0.333));chartB.maxHeightProperty().bind(chartA.heightProperty().multiply(0.333));这似乎非常接近,但并不完美。