我是Java新手,我在VB.NET上工作,但不适用于我的新项目。
我正在尝试制作POS系统,我想询问一件事。
如果我有一个包含10行的数据库表,并且需要将它们放在网格视图等10个面板中,
在vb.net中,我需要制作10个面板并为每个面板重复代码,如果表具有更多行,请使用隐藏和显示属性,这些属性会耗尽专业知识。
在PHP中,我只需要使用foreach语句来显示整个表,而无需重复任何代码。
那么我可以在Java中创建动态网格视图吗?
那我应该在Java中学什么呢?
谢谢你,我的语言不好。
答案 0 :(得分:1)
以下是我想您尝试做的一个例子:
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();
}
}