这似乎是一个非常新手的问题,但我似乎无法找到这种情况的答案。
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
并实现ViewSupport
,PropertyChangeListener
的抽象类。
在代码的最后一行this.panel.add(label);
给出了编译错误。
我没有在Eclipse中看到Panel.add()
建议。
建议的与添加相关的方法是addAncestorListener
,addNotify
,addVetoableChangeListener
。
如何在建议的框中看不到简单的添加方法? 我正在使用1.6编译级别的Eclipse。这会有所作为吗?
提前致谢!
答案 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 {