загрузить этап во вкладке нажатием кнопки без fxml

Две вещи, которые могут помочь:

  1. Используйте Graphics2D.draw(Shape) с экземпляром java.awt.geom.Ellipse2D вместо Graphics.drawOval
  2. Если результат все еще не является удовлетворительным, попробуйте использовать Graphics2D.setRenderingHint для включения сглаживания

Пример

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    Shape theCircle = new Ellipse2D.Double(centerX - radius, centerY - radius, 2.0 * radius, 2.0 * radius);
    g2d.draw(theCircle);
}

См. ответ Йозефа на примере setRenderingHint

0
задан Büsra D 19 March 2019 в 18:31
поделиться

1 ответ

Я думаю, вы должны загрузить узел Parent вместо Stage. В этом примере BorderPane используется как root/Parent. BoderPane должен быть корнем Tab, для которого вы хотите иметь эту функцию.

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

/**
 *
 * @author blj0011
 */
public class JavaFXApplication353 extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        BorderPane root = new BorderPane();

        Button btnDisplay1 = new Button("Display 1");
        VBox.setMargin(btnDisplay1, new Insets(0, 0, 0, 5));
        btnDisplay1.setOnAction((event) -> {
            loadDisplay1(root);
        });

        Button btnDisplay2 = new Button("Display 2");
        VBox.setMargin(btnDisplay2, new Insets(0, 0, 0, 5));
        btnDisplay2.setOnAction((event) -> {
            loadDisplay2(root);
        });

        VBox vbNav = new VBox(btnDisplay1, btnDisplay2);
        vbNav.setAlignment(Pos.CENTER);
        vbNav.setSpacing(5);
        root.setLeft(vbNav);

        loadDisplay1(root);//initial load of scene 1.

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        launch(args);
    }

    public void loadDisplay1(BorderPane root)
    {
        Label label = new Label("Scene 1");
        StackPane displayRoot = new StackPane(label);
        root.setCenter(displayRoot);
    }

    public void loadDisplay2(BorderPane root)
    {
        Label label = new Label("Scene 2");
        StackPane displayRoot = new StackPane(label);
        root.setCenter(displayRoot);
    }

}
0
ответ дан Sedrick 19 March 2019 в 18:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: