Joh*_*dep 2 java swing static-methods
我有一个非常基本的问题.我有一个GUI类,另一个做一些后台处理.通常我在后台类中有一些方法(由多个线程组成),它可以在调用时返回结果,我可以在GUI类中使用结果.
但是现在我有这个奇怪的问题,GUI必须显示一些东西,这需要后台类来调用外部进程,一旦连接到这个进程,连接将保持打开状态,因此除非关闭流,否则我不能返回任何内容.但是,该过程会持续发送需要在GUI上显示的数据
如果我把两者放在同一个班级,我可以这样做; 通过简单的调用例如JLabel.setText(在无限循环中来自外部prcess的东西).但是,如果它在不同的类中,我无法访问此JLabel或来自其他类的任何此类组件.如果我将它们声明为静态,那么GUI会抛出异常,无论如何我可以避免这种情况,或者只是将代码与GUI一起编写在同一个类中的唯一选项
你有两个问题需要解决.
首先,您需要一种方法从一个类到另一个类进行通信.有很多方法可以解决这个问题.例如,您可以让工作类发布GUI类订阅的事件.或者您可以向工作类传递对GUI对象的引用(可能作为接口类型).
其次,您只需要从事件派发线程更新GUI.您可以使用SwingUtilities.invokeAndWait(Runnable)或SwingUtilities.invokeLater(Runnable)进行原始操作.或者您可以使用SwingWorker类提供的更高级别的框架.