0

教育競技会を制御し、拡張画面に質問とメディアを表示するアプリをコーディングしています。スコアを表示する必要があるたびに、ボタンをクリックすると、新しい JFrame が作成され、VLCJ を使用してビデオが再生されます。そして、別のボタンをクリックすると、競争を続けるためにJFrameを破棄する必要があります..グーグルで検索してここで質問した後、ビデオの上にJLabelsを表示できるようにするためにこのコードを思いつきました:

mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {

            private static final long serialVersionUID = 1882423084923822679L;

                @Override
                protected Window onGetOverlay() {

                    final JWindow transparentWindow = new JWindow();

                    transparentWindow.setOpacity(1.0f);
                    transparentWindow.setBackground(new Color(1.0f, 1.0f, 1.0f, 0.0f));
                    transparentWindow.getContentPane().setLayout(null);

                    int x = height/7;
                    for (int i = 0 ; i < numberOfTeams ; i++) {

                        scores[i][0] = new JLabel(scoresArray[i][0]);
                        scores[i][0].setOpaque(false);
                        scores[i][0].setBounds(width/2+width/80, x, width/5, height/16);


                        scores[i][1] = new JLabel(scoresArray[i][1]);
                        scores[i][1].setOpaque(false);
                        scores[i][1].setHorizontalAlignment(SwingConstants.RIGHT);
                        scores[i][1].setBounds(width/2-width/5-width/80 , x, width/5, height/16);

                        transparentWindow.getContentPane().add(scores[i][0]);
                        transparentWindow.getContentPane().add(scores[i][1]);

                        x = x + height/16;
                    }
                    return transparentWindow;
            }
};

mediaplayer.stop()と を使用してスコア JFrame を破棄した後、最初にスコアを表示すると驚くほどうまく機能scoresFrame.dispose()し、そのラベルが付いた JWindow は引き続き質問の上に表示されます。スコアを再表示したい場合、JWindow はビデオの上にまったく表示されません。

問題のいくつかの写真:

スコアが表示されています: スコアは正常に表示されています

ScoreFrame を破棄し、メイン フレーム (質問が表示されている場所) に戻った後 JWindow が破棄されていません

それで、私はここで何が欠けていますか??

どんな助けでも大歓迎です。前もって感謝します。

4

0 に答える 0