0

それで、私は Java メモリー/集中ゲームの割り当てに取り組んでいます。まだ半分しか完成していませんが、GUI はほとんど機能していました... フレームにラジオ ボタンを追加しようとするまでは。JFrame(CardButtonPanelFrame) を JPanel に変更したため、問題が発生した可能性があると思います。JFrameに追加するより大きなJPanelに3つのJPanelを追加しようとしています。以前は 52 枚のカードすべてが表示されていたのに、小さな空白のウィンドウが表示されるようになりました。

基本的に、私がプロジェクトに取り組んでいるとき、物事は複雑で制御不能になる可能性があるので、正しい方向に向かっていることを確認するためにここに来ると思いました.

これが私のメインです:

import javax.swing.*;

public class Project3{
public static void main(String[] args){

    JFrame frame = new JFrame();

    Grid game = new Grid();

    frame.pack();
    frame.add(game);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

}
}

次に、これが最も外側の JPanel です。上部にラジオ ボタン、中央にカード、最後にスコアを下部に配置します。

import java.awt.*;
import javax.swing.*;

public class Grid extends JPanel{

public Grid(){

    JPanel panel = new JPanel(); //construct a frame
    CardButtonPanelFrame buttons = new CardButtonPanelFrame();
    wtf choices = new wtf();

    panel.setLayout(new GridLayout(3,1)); //that panel uses GridLayout

    panel.add(choices);//add the panels to the Frame
    panel.add(buttons);
    //frame.add(scores);

    add(panel);
    setVisible(true);

}
}

これはラジオボタンパネルです... wtfという名前は、コンパイルの問題があり、名前を変更して実験したためです。さまざまなプレーヤーの金額を実装する方法を理解する段階にはまだ達していません。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class wtf extends JPanel implements ActionListener {
   static String zerostring = "Zero Player Game";
   static String onestring = "One Player Game";
   static String twostring = "Two Player Game";

   public wtf() {
     super(new BorderLayout());

     //Create the radio buttons.
     JRadioButton zeroButton = new JRadioButton(zerostring);
     zeroButton.setMnemonic(KeyEvent.VK_C);
     zeroButton.setActionCommand(zerostring);

     JRadioButton oneButton = new JRadioButton(onestring);
     oneButton.setMnemonic(KeyEvent.VK_B);
     oneButton.setActionCommand(onestring);
     oneButton.setSelected(true);

     JRadioButton twoButton = new JRadioButton(twostring);
     twoButton.setMnemonic(KeyEvent.VK_D);
     twoButton.setActionCommand(twostring);

     //Group the radio buttons.
     ButtonGroup group = new ButtonGroup();
     group.add(zeroButton);
     group.add(oneButton);
     group.add(twoButton);

     //Register a listener for the radio buttons.
     zeroButton.addActionListener(this);
     oneButton.addActionListener(this);
     twoButton.addActionListener(this);


     //Put the radio buttons in a column in a panel.
     JPanel radioPanel = new JPanel(new GridLayout(0, 1));
     radioPanel.add(zeroButton);
     radioPanel.add(oneButton);
     radioPanel.add(twoButton);


     add(radioPanel, BorderLayout.LINE_START);
     setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
}

/** Listens to the radio buttons. */
public void actionPerformed(ActionEvent e) {
   //do something with e.getActionCommand()
}
}

だから私はさらに2つのクラスを持っていますが、現在の問題はここにあると思います.これをコードの巨大な壁にすることを恐れています. 他にも質問がありますが、誰も読みたくないページやコードのページを投稿しないように、一度に 1 つずつ回答していきたいと思います。

4

1 に答える 1

2

あなたがしている問題の 1 つは、コンポーネントを追加する前にpack()JFrameを呼び出すことです。そうしないで、代わりに、最初にできるすべてのコンポーネントを追加し、次に を呼び出し、次にpack()setVisible(true)

于 2012-11-25T01:53:42.523 に答える