Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
我可以用java中每个元素的代码创建动态网格视图吗?_Java_Javafx - Fatal编程技术网

我可以用java中每个元素的代码创建动态网格视图吗?

我可以用java中每个元素的代码创建动态网格视图吗?,java,javafx,Java,Javafx,我是java新手,我在VB.NET上工作,但它不适合我的新项目我正在尝试制作一个POS系统,我想询问一件具体的事情如果我有一个有10行的DB表,我需要将它们像网格视图一样放在10个面板中,在vb.net中,我需要制作10个面板,并对每个面板重复代码,使用隐藏和显示属性,如果表中有更多行,这会让人筋疲力尽。 在PHP中,我只需要使用foreach语句来显示整个表,而无需重复任何代码。 那么我可以用java创建一个动态网格视图吗我应该在java中学习什么谢谢你,很抱歉我的语言不好 以下是我认为您正在

我是java新手,我在VB.NET上工作,但它不适合我的新项目
我正在尝试制作一个POS系统,我想询问一件具体的事情
如果我有一个有10行的DB表,我需要将它们像网格视图一样放在10个面板中,
在vb.net中,我需要制作10个面板,并对每个面板重复代码,使用隐藏和显示属性,如果表中有更多行,这会让人筋疲力尽。
在PHP中,我只需要使用foreach语句来显示整个表,而无需重复任何代码。 那么我可以用java创建一个动态网格视图吗
我应该在java中学习什么
谢谢你,很抱歉我的语言不好


以下是我认为您正在尝试做的一个示例:

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.Window;

public class Main extends Application {

  @Override
  public void start(Stage primaryStage) {
    GridPane grid = new GridPane();
    grid.setPadding(new Insets(20));
    grid.setVgap(15);
    grid.setHgap(15);

    buildGrid(grid, getPanelNames());

    primaryStage.setScene(new Scene(grid));
    primaryStage.setTitle("Example App");
    primaryStage.show();

  }

  private void buildGrid(GridPane grid, List<String> panelNames) {
    int row = 0;
    int col = 0;

    for (String name : panelNames) {
      Label label = new Label(name);
      Button btn = new Button("Click Me!");
      btn.setOnAction(event -> {
        event.consume();
        showAlert(grid.getScene().getWindow(), name);
      });

      VBox box = new VBox(10, label, btn);
      box.setPadding(new Insets(10));
      box.setBorder(new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, null)));
      box.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
      grid.add(box, col, row);

      if (++col > 3) {
        col = 0;
        row++;
      }
    }

  }

  private List<String> getPanelNames() {
    return IntStream.rangeClosed(0, 13)
        .mapToObj(i -> "Panel #" + i)
        .collect(Collectors.toList());
  }

  private void showAlert(Window owner, String panelName) {
    Alert alert = new Alert(AlertType.INFORMATION);
    alert.initOwner(owner);
    alert.setTitle(panelName);
    alert.setHeaderText(null);
    alert.setContentText("Hello from \"" + panelName + "\"!");
    alert.show();
  }

}
import java.util.List;
导入java.util.stream.collector;
导入java.util.stream.IntStream;
导入javafx.application.application;
导入javafx.geometry.Insets;
导入javafx.scene.scene;
导入javafx.scene.control.Alert;
导入javafx.scene.control.Alert.AlertType;
导入javafx.scene.control.Button;
导入javafx.scene.control.Label;
导入javafx.scene.layout.Border;
导入javafx.scene.layout.BorderStroke;
导入javafx.scene.layout.BorderStrokeStyle;
导入javafx.scene.layout.GridPane;
导入javafx.scene.layout.Region;
导入javafx.scene.layout.VBox;
导入javafx.scene.paint.Color;
导入javafx.stage.stage;
导入javafx.stage.Window;
公共类主扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
GridPane grid=新建GridPane();
网格设置填充(新插图(20));
网格设置间隙(15);
网格。setHgap(15);
buildGrid(grid,getPanelNames());
初始阶段。设置场景(新场景(网格));
primaryStage.setTitle(“示例应用程序”);
primaryStage.show();
}
私有void buildGrid(网格窗格网格,列表面板名称){
int行=0;
int col=0;
for(字符串名称:panelNames){
标签=新标签(名称);
按钮btn=新建按钮(“单击我!”);
btn.设置动作(事件->{
event.consume();
showAlert(grid.getScene().getWindow(),名称);
});
VBox框=新的VBox(10,标签,btn);
框。设置填充(新插图(10));
box.setBorder(新边框(新边框笔划(Color.BLACK,BorderStrokeStyle.SOLID,null,null));
box.setMinSize(Region.USE\u PREF\u SIZE,Region.USE\u PREF\u SIZE);
添加(框、列、行);
如果(++col>3){
col=0;
行++;
}
}
}
私有列表getPanelNames(){
return IntStream.rangeClosed(0,13)
.mapToObj(i->“面板”#“+i)
.collect(Collectors.toList());
}
私有void showAlert(窗口所有者、字符串名称){
警报警报=新警报(警报类型.信息);
警报。初始所有者(所有者);
alert.setTitle(panelName);
alert.setHeaderText(空);
alert.setContentText(“Hello from\”+panelName+“\”!”;
alert.show();
}
}

由于这个问题被标记为
javafx
,请使用
javafx.scene.layout.GridPane
。谢谢,但是我可以制作一个代码并使用php之类的循环将其应用到所有网格上吗?我知道循环是如何工作的,我的意思是如果我有两个按钮,它们做相同的事情,但在不同的面板上,我可以写一次代码吗?或者我需要为每个按钮写代码。好的,演示你能做什么的最好方法是提供一个突出显示你被卡住的地方的提示;)隐马尔可夫模型。。。。在心情中;)非常感谢!这正是我要问的