我为202班的最终编程作业遇到一些问题。

首先,我的任务是用Java创建一个名为Togiz Kumalak的游戏。 如您所见,我还远远没有完成。

到目前为止,我的两个问题是按钮和文本显示不可见,并且我不知道如何将按钮内部的数字(它们代表种子)变成可以从数字0-10更改的变量。 谢谢你的帮助。

抱歉,我添加了由于ADD而无法正常运行的内容。

编辑:我想出了为什么看不见我的面板的原因,这是因为我看到了第四个面板而没有添加任何内容。 第二个问题仍然存在。

Edit2:更新标题和代码。

import java.awt.*;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Window;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JLabel;

public class Togiz_Kumalak {

    private static void createAndShowUI() {
        CupGui gui = new CupGui();
        TkMenu menu = new TkMenu(gui);
        JFrame frame = new JFrame("Togiz Kumalak");
        frame.getContentPane().add(gui.getMainPanel());

        frame.setJMenuBar(menu.getJMenuBar());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setFocusable(true);
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                createAndShowUI();
            }
        });
    }

    private Togiz_Kumalak() {
    }
}

class CupGui {

    private   String[][] Cup1_Texts = {
        {"10", "10", "10", "10","10", "10", "10"},};
        private  String[][] Cup2_Texts = {
        {"10", "10", "10", "10","10", "10", "10"},};

    private static final int GAP = 5;
    private static final Font BTN_FONT = new Font(Font.DIALOG, Font.BOLD, 20);
    private JPanel firstPanel = new JPanel();
    private JPanel secondPanel = new JPanel();
    private JPanel thirdPanel = new JPanel();
    private JPanel fourthPanel = new JPanel();
    private JPanel textPanel = new JPanel();
    private JPanel mainPanel = new JPanel();
    private JPanel cupPane1;
    private JPanel cupPane2;
    private JTextField display = new JTextField();
    private JLabel label = new JLabel("test");

    CupGui() {
        display.setFont(BTN_FONT);
        cupPane1 = createBtnPanel(Cup1_Texts, "Player 1");
        cupPane2 = createBtnPanel(Cup2_Texts, "Player 2");
        mainPanel.setLayout(new BorderLayout());
        mainPanel.setBorder(BorderFactory.createEmptyBorder(GAP, GAP, GAP, GAP));
        firstPanel.add(cupPane1, BorderLayout.CENTER);

        secondPanel.add(cupPane2, BorderLayout.CENTER);
        thirdPanel.add(firstPanel, BorderLayout.LINE_START);
        thirdPanel.add(secondPanel, BorderLayout.LINE_END);
        thirdPanel.add(fourthPanel, BorderLayout.PAGE_START);
        fourthPanel.add(display, BorderLayout.CENTER);


        mainPanel.add(thirdPanel);





        cupPane1.setVisible(true);
        cupPane2.setVisible(true);
        firstPanel.setVisible(true);
        secondPanel.setVisible(true);
        thirdPanel.setVisible(true);
        fourthPanel.setVisible(true);

    }

    public void cupPanelSetVisible(boolean visible) {
        cupPane1.setVisible(visible);
        Window win = SwingUtilities.getWindowAncestor(mainPanel);
        win.pack();
    }

    public JPanel getMainPanel() {
        return mainPanel;
    }
    public JPanel getFirstPanel(){
      return firstPanel;
    }
    public JPanel getSecondPanel(){
      return secondPanel;
    }

    private JPanel createBtnPanel(String[][] texts, String title) {
        JPanel btnPanel = new JPanel();
        int rows = texts.length;
        int cols = texts[0].length;
        btnPanel.setLayout(new GridLayout(rows, cols, GAP, GAP));
        for (int row = 0; row < texts.length; row++) {
            for (int col = 0; col < texts[row].length; col++) {
                JButton btn = new JButton(texts[row][col]);
                btn.setFont(BTN_FONT);
                btnPanel.add(btn);
            }
        }
        btnPanel.setBorder(BorderFactory.createTitledBorder(title));
        return btnPanel;
    }
}

class TkMenu {

    private static final String NEW_GAME =  "New Game";
    private static final String LOAD_GAME = "Load Game";
    private static final String SAVE_GAME = "Save Game";

    private CupGui gui;
    private JMenuBar menuBar = new JMenuBar();
    private JMenuItem newGame;
    private JMenuItem loadGame;
    private JMenuItem saveGame;

    TkMenu(CupGui gui) {
        this.gui = gui;
        newGame = new JMenuItem(NEW_GAME, KeyEvent.VK_T);
        loadGame = new JMenuItem(LOAD_GAME, KeyEvent.VK_S);
        saveGame = new JMenuItem(SAVE_GAME, KeyEvent.VK_S);



        newGame.setEnabled(true);
        JMenu viewMenu = new JMenu("File");
        viewMenu.setMnemonic(KeyEvent.VK_V);
        viewMenu.add(newGame);
        viewMenu.add(loadGame);
        viewMenu.add(saveGame);

        menuBar.add(viewMenu);

    }

    public JMenuBar getJMenuBar() {
        return menuBar;
    }


        }

===============>>#1 票数:0 已采纳

尝试将ActionListener添加到按钮上,然后将文本设置为等于您选择的变量。 您还可以获取按钮的当前文本,执行计算,然后再次设置按钮的文本。 例如:

 btn.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    int x;
                    x = Integer.parseInt(btn.getText());
                    x--;
                    btn.setText(Integer.toString(x));
                }
            });

  ask by translate from so

未解决问题?本站智能推荐:

1回复

如何将标签放入已创建的内部框架中? [关闭]

给我一个任务,我需要创建一个工具来分析文本字段,然后通过单击按钮输出有关所述文本主体的一些统计信息。 我似乎拥有大多数基本框架,但在将两个标签分别为averageLength和totalWords并添加到我的JPanel中并在下面输入我的正文的位置上使用JPanel时遇到了麻烦。 任何帮助将
2回复

如何从另一个类访问textarea?

主类: 二等 三等 为什么每次按下该按钮都不会在控制台中打印“她”。 我需要我的程序在每次按下按钮时更改文本区域内的文本。 例如,当我按下按钮时,它应该在文本区域中附加“世界”,请帮帮我!
1回复

如何在JTextPane无闪烁中重新绘制(刷新)文本

在下面的代码中,我试图显示一个频率为25 /秒的计数器。 然而,即使你将延迟40ms更改为80ms,它也会闪烁并且不能平滑刷新,它仍然会闪烁。 如何使刷新更顺畅? - 我使用JTextPane的原因是因为我想以HTML格式显示(和刷新)文本
1回复

Java中带有对齐文本的多行标签/区域/窗格

我有一个有趣的任务。 考虑长度未知的String content 。 我想用带有对齐文本的Font font显示content 。 我需要知道如果指定width它将占height 。 我想在屏幕中间显示此文本,但它必须具有width的width 。 因此,我想做如下事情。
1回复

更改JTextPane的大小

我是Java新手,我刚刚在StackOverflow中找到了这段代码: ResizeTextArea 。 我想使用JTextPane而不是JTextArea 。 在JTextPane ,没有setRows()方法来更改行数。 任何帮助,将不胜感激。
2回复

如何将JTextPane或JTextArea的内容设置为String数组?

如何将JTextPane的内容设置为String array ? 我正在制作一个记忆应用程序,该应用程序删除用户在JTextPane输入的随机单词,并将其替换为下划线。 我想将用户输入的内容转换为string array ,每个索引都是一个单独的单词。 是否有人对如何实现这一目标有任何
2回复

每当我在JTextPane中写一个特定的单词时,请指定文本颜色[关闭]

有没有一种方法可以指定我希望文本在书写时具有的颜色? 假设我将“ Apple”设置为红色。 如果我在JTextPane中写“这个苹果是个好苹果”,那么“苹果”一词应该变成红色。 这是我到目前为止的内容,但仅显示全黑。 我想用红色显示Apple
2回复

GridBagLayout中的JTextPane行为不理想

我的程序中遇到以下问题。 我在JScrollPanel中有一个带有GridBagLayout的JPanel。 它应该具有以下行为: 只能在垂直方向上滚动。 在JPanel中动态添加行。 这些行有两列。 两列均应平均划分空间。 该表的每个字段(列/行)都是一个JT
1回复

从另一个类中的JButton的actionPerformed更改JTextArea文本

我有一个功能齐全的基于控制台的数据库,需要向其中添加GUI。 我创建了一个带有“显示所有学生”按钮的标签页(当前只有一个标签),该按钮页面在触发时将显示JTextArea中的学生列表,该列表当然在其自己的类中,而不是在按钮的动作侦听器类中。 问题是,按钮的动作侦听器内部无法识别JTextAr
1回复

JTextArea和JtextPane中的文本对齐

我有以下一段代码,它使用JTextArea显示一些文本, 最初在setText字符串的对齐方面存在问题,但是在我将字体添加为Courier New之后,我解决了它(如果我删除setFont对齐将不起作用。) 最近由于某些要求,我从JtextArea更改为JTextPane ,现在使