0

我是 Java 新手(知道 OOPS 概念,因为我是 ASP.NET 成员,但在过去 2 年没有使用 Java),正在创建井字游戏。

Deleted code here as I am putting my code below.

在这里,我想知道下面的行是如何工作的?

game frame = new game();
frame.setVisible(true);

我知道框架是游戏类的对象并由 new game() 构造函数初始化,但不了解 .setVisible() 方法如何适用于该对象。

我面临的另一个困难是如何访问其他类或方法中的初始化对象。


您好,我问了上一个问题,因为我在这里遇到了这个困难:首先我会给出代码

public class Game extends JFrame {


    private JPanel contentPane;
    //private JPanel settingPane;

    protected JLabel lblPlayerName2; // I am using this one for my testing
    JLabel[] lbls = new JLabel[9];
    private final ButtonGroup buttonGroup = new ButtonGroup();


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Game frame = new Game();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */

    public Game() {
        setTitle("Tic Tac Toe");
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 810, 607);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        contentPane.setName("Tic Tac Toe");
.       
.
..
.
.
.
.
.
.
.
.
.

    for (int i=0; i<lbls.length; i++) {
        lbls[i] = new JLabel(""+(i+1));
        lbls[i].addMouseListener(new AllbtnBehvr());

        lbls[i].setFont(new Font("Trebuchet MS", Font.BOLD, 95));
        lbls[i].setHorizontalAlignment(SwingConstants.CENTER);
        lbls[i].setBorder(new LineBorder(new Color(0, 0, 0), 2));
        panelGameArea.add(lbls[i]);
    }
        .
    .
    .
    .
    .
    .

    .
    .
    .
    .
    .
    .

} // End of Game() 

class AllbtnBehvr implements MouseInputListener{ //Created this class as SubClass of Game Class

        @Override
        public void mouseClicked(MouseEvent src) {
            // TODO Auto-generated method stub

            JLabel b = (JLabel) src.getSource();
            lblPlayerName2.setText(b.getText());


.       }
...
.
.
.
.
.
.
} // End of AllbtnBehvr
}// End of Game Class

在这里,我观察到,变量 'lblPlayerName2' 和 lbls[] 定义在 Game() 构造函数之外,可以访问,但 Game() 中的其他变量无法访问。在这里,我想问一下,

如何访问 Game() 中的变量?如果我在 Game Class 之外创建类,如何访问 Game() 中的变量?

4

2 回答 2

2

游戏扩展了 JFrame,而后者又扩展了 java.awt.Window,因此继承了它的方法

PS。类应该以大写的第一个字母命名。Game.

于 2012-10-30T07:51:42.873 回答
1

您的构造函数调用返回一个游戏对象,但由于游戏是从 JFrame 派生的,因此该对象也是 JFrame、java.awt.Frame、java.awt.Window 等等,一直到 java.lang.Object。

子类从其超类继承行为,因此 java.awt.Window 中定义的 setVisible() 方法可通过 JFrame 在从 Window 子类化的游戏对象中使用。

于 2012-10-30T08:11:33.927 回答