【问题标题】:Update a JInternalFrame更新一个 JInternalFrame
【发布时间】:2014-01-30 13:17:05
【问题描述】:

我在一个JFrame里面有两个internalframes Operation和showOperation,我想知道在制作Operation之后如何更新showOperation,例如:

我试过了

showOperation.repaint();

但是不行,我也试过了

showOperation.dispose();

之后

 showOperation.setVisible(true);

但不起作用 我如何更新这个内部框架?


更多细节,

我有这门课

public class ShowAssistance {
public static JInternalFrame frame = new JInternalFrame();
         .
         . 
         .

public ShowAssistance() {
    showProducts();
}
    public void showProducts(){
    //add the internalframe to the mainframe of the application as explained above
    mainFrame.getframe().add(frame);
   }

当我用来更新内部框架时这个类

public class update{
update(){
  showMeUpdate();
  } public void showMeUpdate(){
    //after some  operations i do
          ShowAssistance.frame.repaint();
}

【问题讨论】:

  • 您的问题让我们有些沮丧,因为您遗漏了很多重要信息。请帮助我们提供更多信息和代码,最好是mcve(请查看链接)。
  • 请查看我的回答,谢谢!

标签: java swing frame


【解决方案1】:

您的问题的关键是我认为可能是参考资料之一,但我无法确定,因为到目前为止您提供给我们的信息非常有限。很可能一个类没有对另一个类的 displayed 实例的有效引用,这意味着您可能正在调用非显示对象的方法。如果是这样,关键是通过 setter 方法或构造函数参数传递该引用。解决方案的细节将取决于问题的细节和代码。

所以如果您需要更多帮助,请向我们提供更多相关信息和相关代码,最好是mcve(请查看链接)。


编辑
关于您最近对问题的补充:

  • 您的框架变量不应是静态的。这不太可能导致您的问题,但可能会在以后导致重大问题。将其设为实例变量并为类提供设置它、更改其状态和提取其状态的方法。
  • 您的showMeUpdate() 方法在JInternalFrame 对象上调用repaint(),但您没有告诉我们为什么您认为这会起到重要作用。对repaint() 的调用不应更改组件的状态,而应仅允许组件重新绘制自身并由于之前的其他状态更改而更改其外观。同样,您的问题仍然缺乏基本细节。您能提供给我们的相关信息越多(不至于用不相关的信息压倒我们),我们就越有能力提供帮助。
  • 您需要学习并遵守 Java 命名约定:Java 类名应以大写字母开头,方法和变量名应以小写字母开头。现在这对您来说似乎微不足道,但是通过遵循这些约定,正在阅读您的代码的其他人(我们!)将更好更快地理解它,并能够为您提供更好的帮助。
  • 您的代码不符合mcve 标准。您越遵守此标准,我们就越能更好地理解您的代码和您的问题。

【讨论】:

  • 我知道 java 约定,我推断出我非常小的一个非常大的类的代码,以大写字母开头,无论如何谢谢你
【解决方案2】:

在我看来,您想要重新组织组件。如果是这样,您可以尝试revalidate 方法。如果这没有达到预期的结果,我们需要更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2013-03-17
    • 2010-10-15
    相关资源
    最近更新 更多