3
getTabbedPane().addTab("Ground", pnlGround);

public BufferedImage getSelectedImage() { 
    return ((SpritePane) getTabbedPane().getSelectedComponent()).getSelectedImage();
}

getTabbedPane().getSelectedComponent()nullを返しています。これは、JTabbedPaneの横にあるJPanelを選択した直後に呼び出されます。これが、メソッドがnullコンポーネントを返す理由を思い付くことができる唯一の理由です。タブは開いていますが、フォーカスがないためです。

それでも、JTabbedPaneで開いたタブを取得する方法を見つける必要があります。

また、getTabbedPane().getComponentAt(i)常にnullを返します。6つのタブがあります。

getSelectedIndex()は正しいインデックスを返しますが、それを渡した場合でもコンポーネントはnullであると表示されます。

PS SpritePaneは、JPanelのサブクラスにすぎません。

4

1 に答える 1

2

アクティブ/選択されたタブを取得したい場合は、試してください

int idx = getTabbedPane().getSelectedIndex();

次に、タブのコンポーネント(パネルなど)を取得できます

Componennt c = getTabbedPane().getComponent(idx);
于 2012-09-14T21:43:18.253 に答える