gpt4 book ai didi

java - 在 java swing 中动态创建项目或允许/禁止用户操作

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:15 31 4
gpt4 key购买 nike

我有一个包含用户、角色和权限的数据库。我希望能够将其映射到前端(Java Swing),以便无法执行操作的用户无法看到它。

一个例子:

  • 角色AddressManager拥有create_address、edit_address和删除_地址。
  • 用户 A 拥有 create_address 和 edit_address 权限。
  • 用户 B 拥有remove_address 权限。

我想要地址 View 的三个按钮代表 AddressManager 中的角色,并让用户 A 和 B 启用/禁用这些按钮。

问题:是否有任何简单的方法可以将数据库表值映射到 Swing 组件(按钮)?

一种方法是手动为每个组件分配启用/禁用,但如果应用程序中有 40 个对话框,其中大约 200 个组件必须拥有权限,那么这种方法是不切实际的。

最佳答案

你能做的就是编写一个这样的类并在任何地方使用它。在您的示例中,您将使用 new ActionContainer("adress"); 添加它它将创建一个 create_address、edit_address、delete_address 按钮,如果用户拥有匹配权限,则启用这些按钮。

package de.steamnet.samples;

// This class is a Panel that renders buttons based on rights.

import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JPanel;

public class ActionContainer extends JPanel {
List<JButton> buttons = new ArrayList<JButton>();

public ActionContainer(String rightBase) {
List<String> rights = database.getRightsStartingWith(rightBase);
for(String nextRight : rights) {
JButton next = new JButton(nextRight);
buttons.add(next);
if(user.hasRight(nextRight)) {
next.setEnabled(true);
} else {
next.setEnabled(false);
}
add(next);
}
}

public void addActionListener(ActionListener al) {
for(JButton next: buttons) {
next.addActionListener(al);
}
}
}

关于java - 在 java swing 中动态创建项目或允许/禁止用户操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485204/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com