首页 > 解决方案 > Javafx 按钮文本未显示

问题描述

我目前正在 JavaFX 中创建布局。但是,我的按钮文本在某些地方显示,而对于某些按钮,文本仅显示为“...”。
我想在按钮中显示整个文本,同时将窗口大小保持为 500x500。
这是我的代码,我正在创建 10 个按钮,其中只有一些按钮显示它们的文本。有没有办法在布局中设置按钮大小不变,同时显示它们的文本?

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class MainGUI extends Application {
    private Button[] buttons=new Button[10];
    private Stage window;
    private GridPane layout;
    public int count=3;
    @Override
    public void start (Stage primaryStage)
    {
        window=primaryStage;
        layout=new GridPane();
        layout.setPadding(new Insets(100));
        layout.setVgap(10);
        layout.setHgap(10);

        for(int i=0;i<10;i++)
        {
            buttons[i]=new Button();
        }
        buttons[0].setText("y=0.5x");
        buttons[1].setText("y=x");
        buttons[2].setText("y=2x");
        buttons[3].setText("y=0.1x^2");
        buttons[4].setText("y=x^2");
        buttons[5].setText("y=10x^2");
        buttons[6].setText("y=3 sin(x pi/10)");
        buttons[7].setText("y=6 sin(x pi/10)");
        buttons[8].setText("y=6 sin(x pi/5)");
        buttons[9].setText("y= 5 sin(x pi/10) + (5/3)sin(3x pi/10) + sin(x pi/2) + (5/7)sin(7x pi/10)");

        for(int j=0;j<10;j++)
        {
            if (count==3)
            {
                count=0;
            }
            if(j<=2)
            {
                GridPane.setConstraints(buttons[j],count,0);
            }
            else if ((j>2) && (j<=5))
            {
                GridPane.setConstraints(buttons[j],count,1);
            }
            else if((j>5) && (j<=8))
            {
                GridPane.setConstraints(buttons[j],count,2);
            }
            else if((j>8) && (j<=9))
            {
                GridPane.setConstraints(buttons[j],1,3);
            }
            count++;
        }
        layout.getChildren().addAll(buttons);
        Scene scene=new Scene(layout,600,600);
        window.setScene(scene);
        window.show();
    }
    public static void main(String[] args)
    {
        launch(args);
    }
}

标签: javabuttonjavafx

解决方案


这是 0 插图的样子:

在此处输入图像描述

如您所见,它很安静。一个简单的替代方法是使最后一个长按钮跨越两列:

GridPane.setConstraints(buttons[j],1,3,2,1);

这导致

在此处输入图像描述

要对布局进行更多控制,请考虑使用一些子窗格。例如:

在此处输入图像描述


推荐阅读