Charts javafx2.x:图表白边框删除

Charts javafx2.x:图表白边框删除,charts,javafx-2,bar-chart,splitpanel,Charts,Javafx 2,Bar Chart,Splitpanel,我在下面的代码中在拆分窗格中绘制了两个系列,但是我想删除一些白色边框,这样网格将填充所有图表空间 这里有一张图片显示我想删除的位置 这是我的密码 import javafx.application.Application; import javafx.application.Platform; import javafx.beans.property.SimpleDoubleProperty; import javafx.collections.ObservableList; import j

我在下面的代码中在拆分窗格中绘制了两个系列,但是我想删除一些白色边框,这样网格将填充所有图表空间

这里有一张图片显示我想删除的位置

这是我的密码

import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.Chart;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.SplitPane;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class XyChartInSplitMove extends Application {

SplitPane splitPane1 = null;
BorderPane pane;
BorderPane pane2;
XYChart.Series series1 = new XYChart.Series();
XYChart.Series series2 = new XYChart.Series();
SimpleDoubleProperty rectinitX = new SimpleDoubleProperty();
SimpleDoubleProperty rectinitY = new SimpleDoubleProperty();

@Override
public void start(Stage stage) {

final NumberAxis xAxis = new NumberAxis(1, 12, 1);
final NumberAxis yAxis = new NumberAxis(0.53000, 0.53910, 0.0005);

xAxis.setAnimated(false);
yAxis.setAnimated(false);
xAxis.setScaleX(0);
xAxis.setVisible(false);

yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis) {

  @Override
  public String toString(Number object) {
    return String.format("%7.5f", object);
  }
});
final LineChart<Number, Number> lineChart1 = new LineChart<Number, Number>(xAxis, yAxis);

lineChart1.setCreateSymbols(false);
lineChart1.setAlternativeRowFillVisible(false);
lineChart1.setAnimated(false);
lineChart1.setLegendVisible(false);   

series1.getData().add(new XYChart.Data(1, 0.53185));
series1.getData().add(new XYChart.Data(2, 0.532235));
series1.getData().add(new XYChart.Data(3, 0.53234));
series1.getData().add(new XYChart.Data(4, 0.538765));
series1.getData().add(new XYChart.Data(5, 0.53442));
series1.getData().add(new XYChart.Data(6, 0.534658));
series1.getData().add(new XYChart.Data(7, 0.53023));
series1.getData().add(new XYChart.Data(8, 0.53001));
series1.getData().add(new XYChart.Data(9, 0.53589));
series1.getData().add(new XYChart.Data(10, 0.53476));
series1.getData().add(new XYChart.Data(11, 0.530123));
series1.getData().add(new XYChart.Data(12, 0.531035));

lineChart1.getData().addAll(series1);

pane = new BorderPane();
pane.setCenter(lineChart1);

splitPane1 = new SplitPane();
splitPane1.setOrientation(Orientation.VERTICAL);
splitPane1.getItems().addAll(pane);
splitPane1.setDividerPosition(0, 1);

Platform.runLater(new Runnable() {

  @Override
  public void run() {
    double percSplit;

    ObservableList<SplitPane.Divider> splitDiv = splitPane1.getDividers();

    percSplit = 1 / (double) (splitDiv.size() + 1);
    for (int i = 0; i < splitDiv.size(); i++) {
      splitPane1.setDividerPosition(i, percSplit);
      percSplit += 1 / (double) (splitDiv.size() + 1);
    }
  }
});
//BarChart
final CategoryAxis xAxis2 = new CategoryAxis();
final NumberAxis yAxis2 = new NumberAxis();

yAxis2.setTickUnit(1);
yAxis2.setPrefWidth(35);
yAxis2.setMinorTickCount(10);

yAxis2.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis2) {

  @Override
  public String toString(Number object) {
    String label;
    label = String.format("%7.2f", object.floatValue());
    return label;
  }
});
final BarChart<String, Number> barChart2 = new BarChart<String, Number>(xAxis2, yAxis2);

barChart2.setAlternativeRowFillVisible(false);
barChart2.setLegendVisible(false);
barChart2.setAnimated(false);

series2.getData().add(new XYChart.Data("Jan", 1));
series2.getData().add(new XYChart.Data("Feb", 3));
series2.getData().add(new XYChart.Data("Mar", 1.5));
series2.getData().add(new XYChart.Data("Apr", 3));
series2.getData().add(new XYChart.Data("May", 4.5));
series2.getData().add(new XYChart.Data("Jun", 5));
series2.getData().add(new XYChart.Data("Jul", 4));
series2.getData().add(new XYChart.Data("Aug", 8));
series2.getData().add(new XYChart.Data("Sep", 16.5));
series2.getData().add(new XYChart.Data("Oct", 13.9));
series2.getData().add(new XYChart.Data("Nov", 17));
series2.getData().add(new XYChart.Data("Dec", 20));

barChart2.getData().addAll(series2);
pane2 = new BorderPane();
pane2.setCenter(barChart2);

Platform.runLater(new Runnable() {

  @Override
  public void run() {
    double percSplit;
    splitPane1.getItems().addAll(pane2);

    ObservableList<SplitPane.Divider> splitDiv = splitPane1.getDividers();

    percSplit = 1 / (double) (splitDiv.size() + 1);
    for (int i = 0; i < splitDiv.size(); i++) {
      splitPane1.setDividerPosition(i, percSplit);
      percSplit += 1 / (double) (splitDiv.size() + 1);
    }
  }
});
Scene scene = new Scene(splitPane1, 800, 600);

stage.setScene(scene);

pane.setOnMouseClicked(mouseHandler);
pane.setOnMouseDragged(mouseHandler);
pane.setOnMouseEntered(mouseHandler);
pane.setOnMouseExited(mouseHandler);
pane.setOnMouseMoved(mouseHandler);
pane.setOnMouseReleased(mouseHandler);

stage.show();
}
EventHandler<MouseEvent> mouseHandler = new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent mouseEvent) {

  if (mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED || mouseEvent.getEventType() == MouseEvent.MOUSE_MOVED) {
    LineChart<Number, Number> lineChart = (LineChart<Number, Number>) pane.getCenter();

    NumberAxis yAxis = (NumberAxis) lineChart.getYAxis();
    NumberAxis xAxis = (NumberAxis) lineChart.getXAxis();
    double newXlower = xAxis.getLowerBound(), newXupper = xAxis.getUpperBound();
    double newYlower = yAxis.getLowerBound(), newYupper = yAxis.getUpperBound();
    double delta = 0.3;

    if (mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED) {
      if (rectinitX.get() < mouseEvent.getX()) {
        newXlower = xAxis.getLowerBound() - delta;
        newXupper = xAxis.getUpperBound() - delta;
      } else if (rectinitX.get() > mouseEvent.getX()) {
        newXlower = xAxis.getLowerBound() + delta;
        newXupper = xAxis.getUpperBound() + delta;
      }
      xAxis.setLowerBound(newXlower);
      xAxis.setUpperBound(newXupper);

      // Y-Axis Moving

      if (rectinitY.get() < mouseEvent.getY()) {
        newYlower = yAxis.getLowerBound() + delta / 1000;
        newYupper = yAxis.getUpperBound() + delta / 1000;
      } else if (rectinitY.get() > mouseEvent.getY()) {
        newYlower = yAxis.getLowerBound() - delta / 1000;
        newYupper = yAxis.getUpperBound() - delta / 1000;
      }
      yAxis.setLowerBound(newYlower);
      yAxis.setUpperBound(newYupper);
    }
    rectinitX.set(mouseEvent.getX());
    rectinitY.set(mouseEvent.getY());

    BarChart<String, Number> barChart2 = (BarChart<String, Number>) pane2.getCenter();
    double chartWidth = xAxis.getWidth();
    double axisSpan = xAxis.getUpperBound() - xAxis.getLowerBound();
    double displacement = (chartWidth / axisSpan) * (1 - newXlower);

    for (Node node : barChart2.getChildrenUnmodifiable()) {
      if (node.getClass().getEnclosingClass() == Chart.class) {
        for (Node node2 : ((Parent) node).getChildrenUnmodifiable()) {
          if ((node2 == barChart2.getXAxis())) {
            node2.translateXProperty().set(displacement);
          }
          if (node2.getClass().getEnclosingClass() == XYChart.class) {
            for (Node node3 : ((Parent) node2).getChildrenUnmodifiable()) {
              if (node3.getClass() == Group.class) {
                node3.translateXProperty().set(displacement);
              }
            }
          }
        }
      }
    }
  }
}
};

public static void main(String[] args) {
launch(args);
}
}
导入javafx.application.application;
导入javafx.application.Platform;
导入javafx.beans.property.SimpleDoubleProperty;
导入javafx.collections.ObservableList;
导入javafx.event.EventHandler;
导入javafx.geometry.Orientation;
导入javafx.scene.Group;
导入javafx.scene.Node;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.chart.BarChart;
导入javafx.scene.chart.CategoryAxis;
导入javafx.scene.chart.chart;
导入javafx.scene.chart.LineChart;
导入javafx.scene.chart.NumberAxis;
导入javafx.scene.chart.XYChart;
导入javafx.scene.control.SplitPane;
导入javafx.scene.input.MouseEvent;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
公共类XyChartInSplitMove扩展了应用程序{
SplitPane splitPane1=null;
边框窗格;
边框窗格2;
XYChart.Series系列1=新的XYChart.Series();
XYChart.Series系列2=新的XYChart.Series();
SimpleDoubleProperty rectinitX=新的SimpleDoubleProperty();
SimpleDoubleProperty rectiny=新的SimpleDoubleProperty();
@凌驾
公众假期开始(阶段){
最终数字xis xAxis=新数字xis(1,12,1);
最终数值轴=新数值轴(0.53000,0.53910,0.0005);
xAxis.setAnimated(false);
yAxis.setAnimated(false);
xAxis.setScaleX(0);
xAxis.setVisible(假);
yAxis.setTickLabelFormatter(新编号Axis.DefaultFormatter(yAxis){
@凌驾
公共字符串toString(数字对象){
返回String.format(“%7.5f”,对象);
}
});
最终线形图线形图1=新线形图(xAxis,yAxis);
lineChart1.SetCreateSymbles(假);
线形图1.setAlternativeRowFillVisible(假);
线形图1.setAnimated(假);
lineChart1.setLegendVisible(假);
series1.getData().add(新的XYChart.Data(1,0.53185));
series1.getData().add(新的XYChart.Data(2,0.532235));
series1.getData().add(新的XYChart.Data(3,0.53234));
series1.getData().add(新的XYChart.Data(4,0.538765));
series1.getData().add(新的XYChart.Data(5,0.53442));
series1.getData().add(新的XYChart.Data(6,0.534658));
series1.getData().add(新的XYChart.Data(7,0.53023));
series1.getData().add(新的XYChart.Data(8,0.53001));
series1.getData().add(新的XYChart.Data(9,0.53589));
series1.getData().add(新的XYChart.Data(10,0.53476));
series1.getData().add(新的XYChart.Data(11,0.530123));
series1.getData().add(新的XYChart.Data(12,0.531035));
lineChart1.getData().addAll(series1);
窗格=新边框窗格();
窗格。设置中心(线形图1);
splitPane1=新的SplitPane();
splitPane1.设置方向(方向.垂直);
splitPane1.getItems().addAll(窗格);
splitPane1.setDividerPosition(0,1);
Platform.runLater(新的Runnable(){
@凌驾
公开募捐{
双分裂;
ObservableList splitDiv=splitPane1.getDividers();
percSplit=1/(双精度)(splitDiv.size()+1);
对于(int i=0;i.chart {
    -fx-padding: 1px;
}
.chart-content {
    -fx-padding: 0px;
}
scene.getStylesheets().add(this.getClass().getResource("style.css").toExternalForm());
...
...
stage.show();
// It should be after stage.show()
lineChart1.setTranslateY(xAxis.getHeight());
// Or give constant value if you want to put this code before the stage.show()
// lineChart1.setTranslateY(28);