1

タイトル画面とセットアップ画面に表示される結果に違いがある理由を理解するのに苦労しています。それぞれを微調整する前に、コードの大部分をコピーして貼り付けました...明らかに、外側のフレームの何かに関係していますが、何がわかりません。私が見ている問題は、タイトル画面が 1024x768 の正しいサイズで表示され、背景が正しく表示されているにもかかわらず、セットアップ画面がサイズを設定していないかのように非常に小さなウィンドウとして表示されることです。ボックスのサイズが変更された場合でも、背景画像はそのスライバーにのみ表示されます。

タイトル画面内のすべての要素を削除しましたが、サイズは維持されています。誰か助けてくれませんか?ありがとう

外枠

public class OuterFrame extends JFrame {

public OuterFrame(String windowHeading) {

int WIDTH = 1024;
int HEIGHT = 768;
final Dimension screenSize = new Dimension(WIDTH,HEIGHT);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

JPanel title = new TitleScreen();
title.setLayout(new BoxLayout(title, BoxLayout.PAGE_AXIS));
JButton matchButton = new JButton("New Match");
    //Add action listener to button
    matchButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //Execute when button is pressed
            removeAll();
            JPanel setupScreen = new SetupScreen();             

            add(setupScreen);
            pack();
        }
    });         
JButton exitButton = new JButton("Exit to Windows");
    //Add action listener to button
    exitButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //Execute when button is pressed
            System.exit(0);
        }
    }); 
matchButton.setAlignmentX(title.CENTER_ALIGNMENT);
exitButton.setAlignmentX(title.CENTER_ALIGNMENT);

title.setPreferredSize(screenSize);
title.add(matchButton);
title.add(Box.createRigidArea(new Dimension(0,25)));
title.add(exitButton);

add(title);

pack();
}
}

タイトル画面

public class TitleScreen extends JPanel {
public BufferedImage background;

public TitleScreen() {
    try {
        InputStream is = new BufferedInputStream(new FileInputStream("images/datascreen.png"));
        Image image = ImageIO.read(is);
        background = (BufferedImage)image; 
    } catch (Exception a) {
    }
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;

    g2.drawImage(background,0,0,1024,768,null);
}
}

セットアップ画面

public class SetupScreen extends JPanel {
public BufferedImage background;

public SetupScreen() {
    try {
        InputStream is = new BufferedInputStream(new FileInputStream("images/datascreen.png"));
        Image image = ImageIO.read(is);
        background = (BufferedImage)image; 
    } catch (Exception a) {
    }
    setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;

    g2.drawImage(background,0,0,1024,768,null);
}
}

フォーマットについて申し訳ありません..私のコードで使用するインデントを維持することはできません。

編集:

@Override
public Dimension getPreferredSize() {
    return new Dimension(1024, 768);
}

上記をタイトルとセットアップ クラスの両方に追加し、ハード コーディングされたサイズ変更を削除しました。問題は引き続き発生します。ウィンドウのサイズはタイトルに対して正しく設定されていますが、セットアップに対しては正しく設定されていません。どんな助けでも大歓迎です..

4

2 に答える 2

0

問題は removeAll() ステートメントであることがわかりました。getContentPane を追加しました。それに、うまくいきました。

于 2013-09-19T16:43:50.180 に答える