导航:首页 > 编程语言 > javafxgridpane棋盘

javafxgridpane棋盘

发布时间:2023-04-22 17:13:13

javafx计算器的问题,我想知道那个显示框是用什么方法,我用textfield的话好像会影响我的

importjavafx.application.Application;
importjavafx.geometry.Insets;
importjavafx.geometry.Pos;
importjavafx.scene.Scene;
importjavafx.scene.control.Button;
importjavafx.scene.control.TextField;
importjavafx.scene.layout.GridPane;
importjavafx.scene.text.Font;
importjavafx.scene.text.FontWeight;
importjavafx.stage.Stage;

{
privatestaticfinalStringstr="123+456-789×C0.÷";

publicstaticvoidmain(String[]args){
launch(args);
}

@Override
publicvoidstart(StageprimaryStage)throwsException{

GridPaneroot=newGridPane();
root.setAlignment(Pos.CENTER);
root.setPadding(newInsets(15));
root.setHgap(10);
root.setVgap(10);
Scenescene=newScene(root,300,350);
TextFieldtf=newTextField();
tf.setPrefHeight(50);//设置文本框的最佳高度为50
tf.setFont(Font.font(java.awt.Font.MONOSPACED,FontWeight.BOLD,18));//字体设置
root.add(tf,0,0,3,1);//跨三列,跨一行

Buttonbtn1=newButton("=");
btn1.setPrefSize(50,50);//设置按钮的最佳宽高
root.add(btn1,3,0);
for(inti=0;i<str.length();i++){
Buttonbtn=newButton(str.charAt(i)+"");
btn.setPrefSize(50,50);
root.add(btn,i%4,i/4+1);//计算出列和行,并添加到GridPane上去
}
primaryStage.setScene(scene);
primaryStage.setTitle("Calculator");
primaryStage.show();
}

}

② JavaFXGridPane间隔可以设置颜色吗

GridPane通常用于布局:第一列上的只读标签的输入表单和第二列上的输入字段。

GridPane可以在行,列或单元格级别指定约束。
例如,我们可以设置包含输入文本字段的第二列,以在窗口调整大小时调整大小。

示例

以下代码演示使用GridPane布局的简单表单应用程序。它有以下布局。

+------------------------+
| [label ] [ field ] |
| [label ] [ field ] |
| [ button ] |
+------------------------+
Java
完整的代码实现如下所示 -

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Main extends Application {
public static void main(String[] args) {
Application.launch(args);
}

@Override
public void start(Stage primaryStage) {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 380, 150, Color.WHITE);
// @ w WW .yII b a I .c O m
GridPane gridpane = new GridPane();
gridpane.setPadding(new Insets(5));
gridpane.setHgap(5);
gridpane.setVgap(5);
ColumnConstraints column1 = new ColumnConstraints(100);
ColumnConstraints column2 = new ColumnConstraints(50, 150, 300);
column2.setHgrow(Priority.ALWAYS);
gridpane.getColumnConstraints().addAll(column1, column2);

Label fNameLbl = new Label("First Name");
TextField fNameFld = new TextField();
Label lNameLbl = new Label("Last Name");
TextField lNameFld = new TextField();

Button saveButt = new Button("Save");

// First name label
GridPane.setHalignment(fNameLbl, HPos.RIGHT);
gridpane.add(fNameLbl, 0, 0);

// Last name label
GridPane.setHalignment(lNameLbl, HPos.RIGHT);
gridpane.add(lNameLbl, 0, 1);

// First name field
GridPane.setHalignment(fNameFld, HPos.LEFT);
gridpane.add(fNameFld, 1, 0);

// Last name field
GridPane.setHalignment(lNameFld, HPos.LEFT);
gridpane.add(lNameFld, 1, 1);

// Save button
GridPane.setHalignment(saveButt, HPos.RIGHT);
gridpane.add(saveButt, 1, 2);

root.setCenter(gridpane);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Java
上面的代码生成以下结果。

示例2

以下是一个实现登录窗口的代码 -

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Main extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("JavaFX Welcome");
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));

Text scenetitle = new Text("Welcome");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(scenetitle, 0, 0, 2, 1);

Label userName = new Label("User Name:");
grid.add(userName, 0, 1);

TextField userTextField = new TextField();
grid.add(userTextField, 1, 1);

Label pw = new Label("Password:");
grid.add(pw, 0, 2);

PasswordField pwBox = new PasswordField();
grid.add(pwBox, 1, 2);

Button btn = new Button("Sign in");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(btn);
grid.add(hbBtn, 1, 4);

final Text actiontarget = new Text();
grid.add(actiontarget, 1, 6);

btn.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent e) {
actiontarget.setFill(Color.FIREBRICK);
actiontarget.setText("Sign in button pressed");
}
});

Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
primaryStage.show();
}
}

③ 如何把fxml文件和java代码编写的事件控制器相关联

现在创建控制器来管理按钮事件。本例演示如何把FXML和Java代码编写的事件控制器相关联。

在Projects窗口,右击 Sample.java,选择 Refactor-- Rename .

输入FXMLExampleController后点击Refactor .

打开FXMLExampleController.java删除代码,用下面的代替 Example
9 .

Example 9
FXMLExampleController.java
package fxmlexample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class FXMLExampleController {
@FXML private Label buttonStatusText;

@FXML protected void handleSubmitButtonAction(ActionEvent event) {
buttonStatusText.setText("Submit button pressed");
}

@FXML protected void handlePasswordFieldAction(ActionEvent event) {
buttonStatusText.setText("Enter key pressed");
}
}
@FXML注解用来标识非公开控制器成员和方法。

作为Java的补充,也可以使用其他编译型语言如Scala来实现控制器。.

现在可以运行了。输入内容点击Submit试试。

想要完整代码,请下载 FXMLExample.zip .

使用脚本语言

除了使用Java创建控制器,可以使用任何提供jsR223-可编译脚本引擎的语言。比如 JavaScript,
Groovy, Jython, 还有Clojure.下面是用 JavaScript编码FXML的。

在fxml_example.fxml文件中,添加JavaScript声明到XML声明后。

<?language javascript?>

在 Button标记中,改变方法名称
:

onAction="handleSubmitButtonAction(event);"

更新标记PasswordField :

onAction="handlePasswordFieldAction(event);"

移除fx:controller 从 BorderPane标记中,在
<script>中添加js方法 ,见Example
10 .

Example 10 JavaScript in FXML
<BorderPane xmlns:fx="http://javafx.com/fxml">
<fx:script>
function handleSubmitButtonAction() {
buttonStatusText.setText("Calling the JavaScript");
}
function handlePasswordFieldAction(event) {
buttonStatusText.text = "More JavaScript";
}
</fx:script>

当然也可以把js方法写进外部文件 (比如 fxml_example.js)然后像下面这样引用:

<fx:script source="fxml_example.js"/>

使用脚本编写FXML,调试时可能不会步入函数体。

使用样式表

使用内联样式,也可以添加样式表然后为结点设置关联。下面创建了样式表来定义网格布局和标签控件的样式。

创建样式表.

在Projects窗口,右击fxmlexample文件夹,选择New -- Other .

在 New File对话框中,选择Other -- Cascading Style Sheet , 然后 Next .

输入 fxmlstylesheet后点击Finish .

用下面的代码代替原来的代码 Example
11 .

Example 11 Contents of Style
Sheet
@charset "utf-8";
/*
Document : FXMLstylesheet.css
*/

.grid-pane {
-fx-padding: 80 0 0 0;
}

.label {
-fx-font: normal 36px Tahoma;
}

打开 FXMLExample.java,把样式表加入到下面代码前面 s tage.show() .scene.getStylesheets().add("fxmlexample/fxmlstylesheet.css");

打开 fxml_example.fxml添加样式类.

为<String>元素添加导入语句。

<?import java.lang.*?>

用下面代码代替GridPane Example
12 .

Example 12 Style Class for Grid
Pane
<GridPane alignment="top_center" hgap="8" vgap="8">
<styleClass>
<String fx:value="grid-pane"/>
</styleClass>

用下面代码代替"Sign In" Label 。 Example
13 .

Example 13 Style class for
Label
<Label text="%signIn"
GridPane.columnIndex="0" GridPane.rowIndex="0">
<styleClass>
<String fx:value="label"/>
</styleClass>
</Label>

使用<styleClass>
标签时,风格会应用到所有的类,除非它有自己的内联风格。所以Example
13 中的更改不仅应用到了 Sign
In标签,也赋予了Username 和Password标签。但不会应用到Login Example标签,因为它有自己的内联样式,覆盖了其他风格。

④ javafx里的gridpane怎么给定行和列来删除一个节点

GridPane 类有用于 GridPane 布局的静态 setHgrow() 和 setVgrow() 方法。 静态 setHgrow() 方法传递 Priority.ALWAYS 参数意味着我们希望该节点占用所有可用的水平空间,并与水平增长限制为 ALWAYS 的其他节点共享此空间。

⑤ 用分治法求解Tromino谜题

import java.lang.Math;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class termino extends Application {
public static void main(String[] args) {
launch(args);
}
GridPane pane = new GridPane();
static ArrayList<Integer> list = new ArrayList<>();
TextField ktf = new TextField();
TextField xtf = new TextField();
TextField ytf = new TextField();
Button qrbutton = new Button("确认");
static int c=1;
int i=0;
int t=1;
static int [][] a= new int[100][100];

@Override
public void start(Stage primaryStage)
{
pane.add(getHBox(),0,0);
qrbutton.setOnAction(e->run());
Scene scene = new Scene(pane);
primaryStage.setTitle("termino");
primaryStage.setScene(scene);
primaryStage.show();
}

void run()
{
pane.getChildren().clear();
int dr = Integer.parseInt(xtf.getText());
int dc = Integer.parseInt(ytf.getText());
int s = Integer.parseInt(ktf.getText());
Tromino(0,0,dr,dc,(int)Math.pow(2,s));
for(int t = 0; t <(int)Math.pow(2,s) ; t++)
{
for (int j = 0; j <(int)Math.pow(2,s); j++)
System.out.printf("%-3d ", a[t][j]);
System.out.print("\n");
}
System.out.print("\n");
for(int j=0;j<list.size();j+=2)
{
Rectangle r = new Rectangle(30,30);
r.setFill(Color.GRAY);
pane.add(r,list.get(j+1),list.get(j));
}
for(int j=0;j<list.size();j++)
{
System.out.println(list.get(j));
}
Button button = new Button("下一步");
pane.add(button, list.size(), list.size());
button.setOnMouseClicked(e->{
i=0;
for(i=0;i<list.size();i+=2)
{
if(a[list.get(i)][list.get(i+1)]==t)
{
Rectangle r1 = new Rectangle(30,30);
r1.setFill(Color.RED);
pane.add(r1,list.get(i+1),list.get(i));
}
}
t++;
});

}

static void Tromino(int tr, int tc, int dr, int dc, int size)
{
if (size == 1)
return;

int t = c++;
int s = size/2;

//左上角
if (dr < tr + s&&dc < tc + s)
Tromino(tr, tc, dr, dc, s);
else
{
a[tr + s - 1][tc + s - 1] = t;
list.add(tr+s-1);
list.add(tc+s-1);
Tromino(tr, tc, tr + s - 1, tc + s - 1, s);
}

//右上角
if (dr < tr + s&&dc >= tc + s)
Tromino(tr, tc + s, dr, dc, s);
else
{
a[tr + s - 1][tc + s] = t;
list.add(tr+s-1);
list.add(tc+s);
Tromino(tr, tc + s, tr + s - 1, tc + s, s);
}

//左下角
if (dr >= tr + s&&dc < tc + s)
Tromino(tr + s, tc, dr, dc, s);
else
{
a[tr + s][tc + s - 1] = t;
list.add(tr+s);
list.add(tc+s-1);
Tromino(tr + s, tc, tr + s, tc + s - 1, s);
}

//右下角
if (dr >= tr + s&&dc >= tc + s)
Tromino(tr + s, tc + s, dr, dc, s);
else
{
a[tr + s][tc + s] = t;
list.add(tr+s);
list.add(tc+s);
Tromino(tr + s, tc + s, tr + s, tc + s, s);
}
}

private HBox getHBox()
{
HBox hbox= new HBox(10);
hbox.setPadding(new Insets(15,15,15,15));
hbox.setStyle("-fx-background-color:gold");
hbox.getChildren().add(new Label("输入行数"));
hbox.getChildren().add(ktf);
hbox.getChildren().add(new Label("输入空位置行数"));
hbox.getChildren().add(xtf);
hbox.getChildren().add(new Label("输入空位置列数"));
hbox.getChildren().add(ytf);
hbox.getChildren().add(qrbutton);
return hbox;
}
}

⑥ javafx窗体面板位置

点击 ImageView 调整窗口。
Javafx几种典型的布局是FlowPane面板它采用的布局策略是,按照控件的添加次序按个摆放,按照从上到下,从左到右的次序摆放,当窗口的大小发生变化后,场景的大小也自动跟着变化,面板的大小也跟着变化,并且会重新计算各个控件的位置,重新摆放各个控件的位置,GridPane面板陪弊它采用的布局策略雹让是,将整个面板划分为若干个格子,每个格子的大小是一样的,每个格子中可以放置一个控件源乱局,类似于表格的方式。

⑦ javaFX怎么把两个不同的pane加到一个scene中

这种要并排放置的情况就把一个HBox对象设为Scene的root,然后再把两个panel放到HBox上即可。由于你只是要界面,计算器的计算逻辑我就不实现了,具体代码如下(运行环境:jdk8或以上):


import javafx.application.Application;

import javafx.geometry.Pos;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.Label;

import javafx.scene.layout.GridPane;

import javafx.scene.layout.HBox;

import javafx.scene.layout.Priority;

import javafx.stage.Stage;


public class TwoPane extends Application {


final static private int BUTTON_WIDTH = 40;

final static private int BUTTON_HEIGHT = 40;


public static void main(String[] args) {

launch(args);

}

@Override

public void start(Stage primaryStage) throws Exception {

primaryStage.setTitle("简易计算器");


Label label = new Label("");

label.setAlignment(Pos.CENTER);

label.setMinWidth(100);

HBox expresssionPanel = new HBox(label);

expresssionPanel.setAlignment(Pos.CENTER);

GridPane keyboardPanel = new GridPane();

for(int i = 1; i <= 9; ++i){

Button btn = new Button(String.valueOf(i));

btn.setPrefSize(BUTTON_WIDTH, BUTTON_HEIGHT);

btn.setOnAction(e -> label.setText(label.getText() + btn.getText()));

keyboardPanel.add(btn, (i - 1) % 3, i > 3 ? (i > 6 ? 2 : 1) : 0);

}

Button zero = new Button(String.valueOf("0"));

zero.setPrefSize(BUTTON_WIDTH, BUTTON_HEIGHT);

zero.setOnAction(e -> label.setText(label.getText() + zero.getText()));

Button plus = new Button(String.valueOf("+"));

plus.setPrefSize(BUTTON_WIDTH, BUTTON_HEIGHT);

plus.setOnAction(e -> label.setText(label.getText() + plus.getText()));

Button minus = new Button(String.valueOf("-"));

minus.setPrefSize(BUTTON_WIDTH, BUTTON_HEIGHT);

minus.setOnAction(e -> label.setText(label.getText() + minus.getText()));

Button time = new Button(String.valueOf("*"));

time.setPrefSize(BUTTON_WIDTH, BUTTON_HEIGHT);

time.setOnAction(e -> label.setText(label.getText() + time.getText()));

Button divide = new Button(String.valueOf("/"));

divide.setPrefSize(BUTTON_WIDTH, BUTTON_HEIGHT);

divide.setOnAction(e -> label.setText(label.getText() + divide.getText()));

Button calc = new Button(String.valueOf("="));

calc.setPrefSize(BUTTON_WIDTH, BUTTON_HEIGHT);

calc.setOnAction(e -> label.setText(label.getText() + calc.getText())/*TODO 计算逻辑代码待完成*/);

keyboardPanel.add(zero, 0, 3);

keyboardPanel.add(plus, 1, 3);

keyboardPanel.add(minus, 2, 3);

keyboardPanel.add(time, 0, 4);

keyboardPanel.add(divide, 1, 4);

keyboardPanel.add(calc, 2, 4);

HBox root = new HBox(expresssionPanel, keyboardPanel);

HBox.setHgrow(expresssionPanel, Priority.ALWAYS);

primaryStage.setScene(new Scene(root));

primaryStage.show();

}

}

-------------效果如下----------------

⑧ 在GridPane怎么添加TextField和Label

我也遇到了这个问题,然后我显式地写了

importjavafx.scene.control.Button;
importjavafx.scene.control.TextField;
importjavafx.scene.control.Label;

就不报错了

⑨ javafx 如何让ComboBox铺满GridPane的整列

试试GridPane的这个方法:
public static void setHgrow(Node child,
Priority value)

Sets the horizontal grow priority for the child when contained by a gridpane.
If set, the gridpane will use the priority to allocate the child additional
horizontal space if the gridpane is resized larger than it's preferred width.
Setting the value to null will remove the constraint.

Parameters:
child - the child of a gridpane
value - the horizontal grow priority for the child

⑩ 求大佬帮帮忙用java写这样一个界面。

阅读全文

与javafxgridpane棋盘相关的资料

热点内容
win10扫描的文件在哪里 浏览:615
pdf文件公章歪了怎么处理 浏览:322
java下载文件的路径 浏览:551
现在有哪些热门的软件编程 浏览:453
asp什么文件迅雷下载 浏览:381
巫妖王之怒升级路线 浏览:348
wps如何发送文件 浏览:359
网站怎么加流量 浏览:457
圣魔之光石破解版本 浏览:110
湖北文件柜多少钱一套 浏览:103
artlantis渲染器教程 浏览:679
360系统文件可以清理吗 浏览:256
extjsform样式 浏览:513
电信猫怎么设置wifi密码 浏览:785
p190文件用什么打开 浏览:252
怎么修改ps签署文件 浏览:847
怎么找到编程猫作品文件 浏览:647
铁路局的网站是多少 浏览:194
微信双号 浏览:926
招标文件中的净值是什么意思 浏览:675

友情链接