2016-12-23 17 views
0

これは非常に初心者の質問と思われるかもしれませんが、私はこの状況の答えを見つけることができないようです。 How to Use Panelsチュートリアルでは、add()メソッドがJPanelにあると言いますが、自分のコードで実装することはできません。JPanelにラベルを追加し、Eclipseで提案されていない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); 
} 
} 

AbstractViewJPanelを拡張しViewSupportPropertyChangeListenerを実装する抽象クラスです。

コードthis.panel.add(label);の最後の行で、コンパイルエラーが発生します。 EclipseでPanel.add()が表示されません。 推奨される追加関連メソッドは、addAncestorListener,addNotify,addVetoableChangeListenerです。

提案されたボックスに簡単な追加メソッドが表示されないのはなぜですか? 私は1.6のコンパイルレベルのEclipseを使用しています。違いはありますか?

ありがとうございます!

+0

どこのAbstractViewを取得したのですか? Java SDKのビルドインではありません。 – richersoon

答えて

0

ここでAbstractViewを入手しましたか? Swing hierachyには組み込まれていません。あなたのクラス名に

ベース多分あなたは、あなたがJPanelのパネルを作成しますが、何もそれを追加代わりにAbstractView

public class JPanelTest extends JPanel { 
2

JPanelを拡張したいです。はい、JLabelを受け取っていますが、メインのGUIウィンドウ(JFrame?)で表示されるものにJLabelもパネルJPanelも追加されていないので、何も表示されません。

解決策:パネル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); 
} 
+0

ありがとうございます。 GUI上に表示するのは失敗ではありませんでしたが、なぜコンパイルエラーが発生したのか、そしてEclipseが単純な追加メソッドを提案していなかった理由についてです。 コードをコピーして貼り付け、コンパイルエラーがなくなりました。 Eclipseでそれは奇妙に思えます。 –

+0

@ In-youngChoung:あなたは自分のクラス「JPanel」を持っていますか?もしそうなら、あなたはコンパイラ(そしてあなた自身)を混乱させるだろう。 –

+0

@ In-youngChoung:あなたの質問がコンパイルエラー(完全に見ていないのは申し訳ありません)の場合は、言い換えれば完全なエラーメッセージを必ず投稿してください。 –

関連する問題