【问题标题】:Adding Label to JPanel and Add method not suggested in EclipseEclipse 中不建议向 JPanel 添加标签和添加方法
【发布时间】:2016-12-23 16:31:37
【问题描述】:

这似乎是一个非常新手的问题,但我似乎无法找到这种情况的答案。 How to Use Panels 教程说 JPanel 中有一个 add() 方法,但我无法在我的代码中实现它。

public class JPanelTest extends AbstractView {
   private final JPanel panel;

 public JPanelTest () {
   this.panel = new JPanel(new BorderLayout());
 }

 private void initComponents() {
   JLabel label = new JLabel("label testing ");
   this.panel.add(label);
 }
}

AbstractView 是一个抽象类,扩展了JPanel 并实现了ViewSupportPropertyChangeListener

在代码的最后一行this.panel.add(label); 给出了编译错误。 我没有在 Eclipse 中看到建议的 Panel.add()。 建议添加相关方法为addAncestorListeneraddNotifyaddVetoableChangeListener

我怎么看不到建议框中的简单添加方法? 我正在使用 Eclipse 的 1.6 编译级别。那会有什么不同吗?

提前致谢!

【问题讨论】:

  • 您从哪里获得 AbstractView?它不是 Java SDK 的内置版本。

标签: java eclipse swing jpanel jlabel


【解决方案1】:

您创建了 JPanel 面板,但没有添加任何内容。所以是的,它正在接收 JLabel,但是由于 JLabel 和面板 JPanel 都没有添加到主 GUI 窗口(一个 JFrame?)显示的任何内容中,所以没有显示。

解决方案:将面板 JPanel 或 JLabel 本身添加到 this 对象(希望将其添加到顶层窗口/JFrame)。

所以要么:

private void initComponents() {
   JLabel label = new JLabel("label testing ");
   this.panel.add(label);
   this.add(panel);
}

private void initComponents() {
   JLabel label = new JLabel("label testing ");
   // this.panel.add(label);
   this.add(label);
}

【讨论】:

  • 谢谢。这不是关于未能在 GUI 上显示它,而是更多关于为什么我得到一个编译错误并且 eclipse 没有建议一个简单的 add 方法。我复制了你的代码并粘贴了它,编译错误消失了。在 Eclipse 中这样做似乎很奇怪。
  • @In-youngChoung:你有自己的班级JPanel吗?如果是这样,您会混淆编译器(和您自己)。
  • @In-youngChoung:如果您的问题是关于编译错误(很抱歉没有完整查看),请务必发布完整的错误消息,而不仅仅是对其进行解释。
  • 是的,你是对的。但是,在键入和查看不包含简单添加方法的建议方法框时,更多的是编译错误。一旦我复制了你的代码并粘贴,它似乎没问题(没有编译错误)。
  • 我想知道为什么有时 Eclipse 没有在建议框中包含某些方法。
【解决方案2】:

您从哪里获得 AbstractView?它不是 Swing hierachy 的内置版本。

根据你的类名,也许你想扩展 JPanel 而不是 AbstractView

public class JPanelTest extends JPanel {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    相关资源
    最近更新 更多