当前位置: 首页 > 面试题库 >

Java / Swing:从JPanel内部获取Window / JFrame

柴泰平
2023-03-14
问题内容

我如何获得JPanel所在的JFrame?

我当前的解决方案是询问面板的父面板(依此类推),直到找到Window:

Container parent = this; // this is a JPanel
do {
    parent = parent.getParent();
} while (!(parent instanceof Window) && parent != null);
if (parent != null) {
    // found a parent Window
}

标准库中有没有一种更优雅的方法?


问题答案:

您可以使用SwingUtilities.getWindowAncestor(...) 将返回可转换为顶级类型的Window的方法。

JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);


 类似资料:
  • 我有一个从文件生成的面板。我不知道到底要添加多少字段和标签,我希望它包含两列label和field。我认为我可以通过GridBagLayout和GridBagConstraints来做到这一点,但我不知道如何做到这一点。有人知道如何从JPanel/JFrame中恢复GridBagConstraints吗? 如果没有,我们将非常感谢您提出的任何替代方案。

  • 我在玩Java Swing,当谈到JPanel和JComponent时,我真的很困惑。根据CoreJava第一卷(cay horstmann): 有些程序员宁愿扩展JPanel类,而不是扩展JComponent。JPanel是一个可以包含其他组件的容器,但也可以在其上涂漆。只有一个区别。面板是不透明的,这意味着它负责绘制其边界内的所有像素。实现这一点的最简单方法是调用super,用背景色绘制面板。

  • 我想创建一个在POS系统中使用的新窗口。用户输入的是客户拥有的金额,窗口必须显示兑换金额。我是使用< code>JOptionPane功能的新手(我一直在使用< code>JAVAFX它是不同的)。 这是我的代码: 有什么建议吗?

  • 问题内容: 我有以下代码。我想掌握用来创建内部类对象的外部类对象。我该怎么做? 编辑:好,你们中的一些人建议通过添加方法来修改内部类: 但是,如果我没有控制权来修改内部类,那(只是确认一下),我们还有其他方法可以从内部类对象中获取相应的外部类对象吗? 问题答案: 在内部类本身中,你可以使用。该表达式允许引用任何词法包围的实例,在JLS中被描述为。 我认为没有办法从内部类的代码之外获取实例。当然,你

  • 我试图在JPanel中表示一个给定的数学函数,因为现在我只有轴,但是轴没有绘制,我不知道为什么,顺便说一下,如果我在框架中调用< code>new Axis(),它会绘制。 主要类别 轴类 另一个问题:有可能有多种绘画方法吗?