将标签添加到JPanel和Eclipse中未建议的添加方法

时间:2016-12-23 16:31:37

标签: java eclipse swing jpanel jlabel

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

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

如何在建议的框中看不到简单的添加方法? 我正在使用1.6编译级别的Eclipse。这会有所作为吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您创建了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);
}

答案 1 :(得分:0)

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

根据您的班级名称,您可能希望延长JPanel而不是AbstractView

public class JPanelTest extends JPanel {