为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

LEATH 2021-10-28 09:40:28
我是 Java 新手,我正在研究 VB.NET,但它不适合我的新项目。我正在尝试制作一个 POS 系统,我想问一个具体的问题。如果我有一个 10 行的 DB 表,我需要将它们像网格视图一样放在 10 个面板中,在 vb.net 中,我需要制作 10 个面板并为每个面板重复代码并使用隐藏和显示属性,这很累人如果表有更多行,则专业。在PHP中,我只需要使用foreach语句来显示整个表格,无需重复任何代码。那么我可以在java中创建动态网格视图吗?我到底应该在 Java 中学习什么?谢谢你,抱歉我的语言不好。
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

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


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();

  }


}



查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信