gpt4 book ai didi

java - 如何对对象使用不同的枚举类型来构建具有唯一值的 GUI 滚动列表

转载 作者:行者123 更新时间:2023-12-01 10:51:01 26 4
gpt4 key购买 nike

查看了许多与将不同枚举类型传递给方法相关的帖子,但不相信我的具体情况/问题已得到解决。

以下是我建立的Enum Type类(修改为隐藏分类信息):

public class ProjectA_Enums{
private ProjectA_Enums(){
}

public enum TableA_Filter_Sort_Options{
TIMESTAMP ("TIMESTAMP", "tbla_timestamp"),
USER ("USER", "tbla_user"),
SHARE ("SHARE", "tbla_share"),
CONDITION ("CONDITION", "tbla_condition",
TERMINAL ("TERMINAL", "tbla_terminal");

private final String filter_name;
private final String database_column_name;

private TableA_Filter_Sort_Options(String filter_name,
String database_column_name){
this.filter_name = filter_name;
this.database_column_name = database_column_name;
}

public String getFilter_name(){
return filter_name;
}

public String getDatabase_column_name(){
return database_column_name;
}
}

public enum TableB_Filter_Sort_Options{
TIMESTAMP ("TIMESTAMP", "tblb_timestamp"),
ERROR_CODE ("ERROR CODE", "tblb_errcode"),
ERROR_MESSAGE ("ERROR MESSAGE", "tblb_errmsg");

private final String filter_name;
private final String database_column_name;

private TableA_Filter_Sort_Options(String filter_name,
String database_column_name){
this.filter_name = filter_name;
this.database_column_name = database_column_name;
}

public String getFilter_name(){
return filter_name;
}

public String getDatabase_column_name(){
return database_column_name;
}
}
}

现在的情况是这样的:

我想调用类FilterSortDialogDisplay并传递枚举类型TableA_Filter_Sort_OptionsTableB_Filter_Sort_Options来构建和显示一个对话框GUI,其中显示适用的过滤器在滚动 Pane 中。

此类将允许用户选择适用的过滤器来执行数据库查询以及所需的排序顺序。

对于枚举类型TableA_Filter_Sort_Options,显示的过滤器将为TIMESTAMP、USER、SHARE、CONDITION、TERMINAL,对于TableB_Filter_Sort_Options,显示的过滤器将为TIMESTAMP、ERROR CODE、ERROR MESSAGE 。

与每个 Enum 类型值关联的第二个属性是在生成的数据库查询 SQL 中使用的关联数据库表列。我在另一篇文章中看到必须将接收方法的输入参数定义为Class。由于缺乏 Java 知识,我不确定如何编写代码来使用传入的 Enum 类型。

由于我已经使用相同的属性和方法设置了两种枚举类型,因此我希望能够将 FilterSortDialogDisplay 类中的属性转换为适当的枚举类型,然后调用这些方法。

希望枚举类型是用于执行定义的功能的正确构造,因为将存在具有不同数字和过滤器值的其他枚举类型,需要为其生成和显示过滤器排序对话框,而不需要冗余代码基于枚举类型。

提前感谢您提供的任何帮助。

最佳答案

我建议您不要为此使用枚举。从您的描述来看,您似乎想要传递一个包含足够信息的对象,以便对话框显示过滤器信息并生成查询。我建议您定义一个接口(interface),然后为您的各种表创建实现。

解决方案可能类似于:

public interface FilterSortOption {
Stream<Criteria> getFilterCriteria();
String generateQuery(Map<Criteria, Value> values);
}

void showDialogAndRunQuery(FilterSortOption option) {
....
}

然后你可以定义它的几个实现。如果他们共享代码(因为他们很可能这样做),那么该代码可以进入每个实现委托(delegate)给的单独的类中。该委托(delegate)类可能可能使用枚举来包含列和条件信息。如果您需要,我可以提供有关如何执行此操作的指导。

关于java - 如何对对象使用不同的枚举类型来构建具有唯一值的 GUI 滚动列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906041/

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