小编Dan*_*Mac的帖子

Java,大型GUI类,包含许多ActionListeners; 组织听众的最佳方式?

我一直在开发java程序一年半.我目前正在开展夏季项目,涉及相当大的图形用户界面.

我的GUI由几个选项卡式窗格组成.每个窗格都有自己的类.每个窗格都有几个jButtons.

现在,我已经到了一个点,在我的选项卡式窗格类中有很多匿名内部类(对于ActionListeners),我确信必须有更好的方法; 如果不是为了效率,那么为了可维护性 - 它变得非常混乱.

我的问题是:当你在每个班级中有很多听众时,是否有更好的组织听众?我已经考虑过在相关类中集中监听器 - 如下面的示例代码:

public class SomeListeners implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e){
        String command = e.getActionCommand();
        switch(command){
            case "This button":
                doThis();
                break;
            case "That button":
                doThat();
                break;                          
        }
    }     
}
Run Code Online (Sandbox Code Playgroud)

或者可能有更好的方法?

提前致谢 :)

java swing actionlistener

6
推荐指数
1
解决办法
2021
查看次数

Java,指向内存中同一对象的引用变量

我正在开发一个GUI程序,我在其中创建了类,通过功能集群ActionListeners.我的问题是关于JVM如何处理jButton,它们添加了相同的ActionListener.

第一; 我知道JVM可以通过让指向相同字符串(例如)的两个引用变量指向内存中的相同字符串对象来节省内存.

public class Example {
    String str1 = "SomeString";
    String str2 = "SomeString";  
}
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:如果我有5个jButton.所有按钮都添加了相同的ActionListener.当程序运行时,它们是否会添加5个单独的,相同的,同一类的实例?或者JVM会做类似的事情(对于上面提到的)?

  • 提前致谢 :)

java memory variables user-interface

5
推荐指数
1
解决办法
1288
查看次数

保存项目数据.你会怎么做?

我开发了一个大规模的GUI程序,我有很多需要存储locally在命令中的项目数据.

目前,我将所有全局数据结构保存在保存类(项目)中,然后将它们序列化为本地硬盘文件:

public void saveChanges() {
    ArrayList<Student> studentList = new ArrayList<>();
    ArrayList<String> coursesList = new ArrayList<>();
    ArrayList<Requirement> reqList = new ArrayList<>();
    ArrayList<Risk> riskList = new ArrayList<>();
    for (int x = 0; x < dlm.getSize(); x++) {
        studentList.add(dlm.elementAt(x));
    }
    for (int x = 0; x < dlm2.getSize(); x++) {
        coursesList.add(dlm2.elementAt(x));
    }
    for (int x = 0; x < dlm3.getSize(); x++) {
        reqList.add(dlm3.elementAt(x));
    }
    for (int x = 0; x < riskTable.getRowCount(); x++) {
        riskList.add((Risk) riskMap.get(dtm1.getValueAt(x, 0)));
    }

    project.setStudentAL(studentList);
    project.setCoursesAL(coursesList); …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing arraylist save

5
推荐指数
0
解决办法
771
查看次数

为什么要实现两个如此相似的数据结构,如List和Tuple

在python中,list数据结构是一系列元素.类似地,a tuple也是一系列元素,然而,元组是immutable.

是什么原因产生了这样一个类似的数据结构,那就是只有功能,而不是列表,它是不能改变的?它是否可以通过不可变来节省内存空间?

此外,如果列表和元组包含完全相同的数据,它们是否会在内存中使用相同的空间量?

python tuples list immutability

4
推荐指数
1
解决办法
457
查看次数

TreeSet和compareTo()方法.单个排序或多个排序

我目前正在开发一个程序,我用它TreeSet来存储唯一的密钥.我正在使用TreeSet,因为我希望它们排序.

截至目前,我一直在制作一个TreeSet对象,并在需要时一次一个地添加字符串.

TreeSet set = new TreeSet();
set.add("How");
set.add("Are");
set.add("You");
Run Code Online (Sandbox Code Playgroud)

据推测,TreeSet使用中的compareTo方法Compareable interface对字符串进行排序.这意味着每次向其添加String时,TreeSet都必须进行排序.

现在我的问题是:创建一个HashSet然后创建TreeSet后面all strings的HashSet 会更有效吗?

TreeSet<String> treeSet = new TreeSet<String>(set);
Run Code Online (Sandbox Code Playgroud)

我的想法是关于TreeSet是否只需要以这种方式进行单一排序.

提前致谢

java hashset compareto treeset

1
推荐指数
1
解决办法
1425
查看次数

接口中的代码实现

我一直想知道为什么允许在接口中执行代码实现,当接口被假定为不包含代码实现时:

public interface someInterface{
String someString = "example";   
}
Run Code Online (Sandbox Code Playgroud)

我可以使类实现此接口,而不会出现错误:

public class someClass implements someInterface
Run Code Online (Sandbox Code Playgroud)

怎么会?

java implementation interface

0
推荐指数
1
解决办法
133
查看次数