如何将Jbutton中的文本转换为变量,并在其更改后进行更新



我在202类的最后一次编程任务中遇到了一些问题。

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

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

我为这件事道歉,我添加了一些由于我的ADD而还不能正常工作的东西。

编辑:我弄清楚了为什么我的面板不可见,因为我的第四个面板是可见的,没有添加任何内容。第二个问题仍然存在。

第2版:更新标题和代码。

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;
    }

        }

尝试向按钮添加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));
                }
            });

最新更新