как скрыть текст на JButton в Java?

1

У меня есть несколько кнопок с цифрами на них, чтобы различать кнопку, но я не хочу, чтобы эти цифры были видимыми. Есть ли способ иметь текст на кнопках и просто скрывать его или делать его невидимым?

вот мой код:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Start {
    public static int a;
    public static JButton[][] gumbi = new JButton[15][15];

    public static void main(String[] args) {
        JFrame okno = new JFrame("Nonogram");
        okno.setVisible(true);
        okno.setSize(800, 800);
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new BorderLayout());
        okno.add(panel);

        JPanel polje = new JPanel(new GridLayout(15, 15));
        panel.add(polje, BorderLayout.CENTER);
        a = 0;
        int b = 1;

        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {
                if (i < 5 && j < 5) {
                    gumbi[i][j] = new JButton();
                    gumbi[i][j].setBackground(Color.GREEN);
                    // gumbi[i][j].addActionListener(new Listener(gumbi));
                    polje.add(gumbi[i][j]);
                } else if (i < 5 || j < 5) {
                    gumbi[i][j] = new JButton();
                    gumbi[i][j].setBackground(Color.YELLOW);

                    // gumbi[i][j].addActionListener(new Listener(gumbi));
                    polje.add(gumbi[i][j]);
                    gumbi[i][j].setEnabled(false);

                } else {
                    if (Math.random() <= 0.6) {
                        a += 1;
                        gumbi[i][j] = new JButton();
                        gumbi[i][j].setBackground(Color.WHITE);
                        // gumbi[i][j].addActionListener(new Listener(gumbi));
                        gumbi[i][j].setText("3");
                        polje.add(gumbi[i][j]);

                    } else {
                        gumbi[i][j] = new JButton();
                        gumbi[i][j].setBackground(Color.WHITE);
                        // gumbi[i][j].addActionListener(new Listener(gumbi));
                        gumbi[i][j].setText("4");
                        polje.add(gumbi[i][j]);
                    }
                }
            }
        }


        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {
                gumbi[i][j].addActionListener(new Listener(gumbi));
            }
        }

        int [] array = new int[105];
        for (int i = 5; i < 15; i++) {
            for (int j = 5; j < 15; j++) {
                int num = Integer.parseInt(gumbi[i][j].getText());
                array [j + ((i-5)*10) - 5] = num;   
            }
        }

        int [] array2 = new int[105];
        for(int i = 0; i < 100; i++){
            array2[i] = -2;
        }
        array2[0] = -8;

        for(int i = 0; i < 100; i++){
            if(array[i] == array[i + 1] && array[i] == 3 && (i + 1) % 10 != 0){
                b += 1;
            } else if((array[i] == 3 && array[i] != array[i+1] && i < 99) || ((i + 1) % 10 == 0 && array[i] == 3)){
            array2[i] = b;
            b = 1;
            }
            if((i + 1) % 10 == 0){
                b = 1;
            }
        }
        int x = 0;
        int y = 0;
        for(int i = 1 ;i <= 100; i++){
                //if(array2[(i-4) + (10*(j - 5))] != -2){
            if (array2[i] != -2 && array[i] != 0){
                gumbi[x + 5][y].setText("" + array2[i]);
                y++;
            }
            if((i + 1) % 10 == 0){
                x++;
                y = 0;
            }

        }

        for(int i = 0; i < 101; i++){
            //System.out.println(array[i]);
            if(array2[i] != -2)
            System.out.print(array2[i] + " ");
            }
        for (int i = 5; i < 15; i++) {
            for (int j = 5; j < 15; j++) {
                int num = Integer.parseInt(gumbi[j][i].getText());
                array [j + ((i-5)*10) - 5] = num;   
            }
        }
        for(int i = 0; i < 100; i++){
            array2[i] = -2;
        }
        array2[0] = -8;
        b = 1;
        for(int i = 0; i < 100; i++){
            if(array[i] == array[i + 1] && array[i] == 3 && (i + 1) % 10 != 0){
                b += 1;
            } else if((array[i] == 3 && array[i] != array[i+1] && i < 99) || ((i + 1) % 10 == 0 &&             array[i] == 3)){
            array2[i] = b;
            b = 1;
            }
            if((i + 1) % 10 == 0){
                b = 1;
            }

        }
        x = 0;
        y = 0;
        for(int i = 1 ;i <= 100; i++){
            //if(array2[(i-4) + (10*(j - 5))] != -2){
        if (array2[i] != -2 && array[i] != 0){
            gumbi[y][x + 5].setText("" + array2[i]);
            y++;
        }
        if((i + 1) % 10 == 0){
            x++;
            y = 0;
        }

    }
        System.out.println();
        for(int i = 0; i < 105; i++){
            //System.out.println(array[i]);
            if(array2[i] != -2)
            System.out.print(array2[i] + " ");
        }
    }
}

и прослушиватель действий:

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

public class Listener implements ActionListener {
    JButton[][] gumbi = Start.gumbi;

    public Listener(JButton[][] gumbi) {
        this.gumbi = gumbi;

    }

    public void actionPerformed(ActionEvent e) {

        JButton gumb = (JButton) e.getSource();

        if (gumb.getBackground() == Color.WHITE) {
            gumb.setBackground(Color.BLACK);
        } else if (gumb.getBackground() == Color.BLACK) {
            gumb.setBackground(Color.WHITE);
        }
        if (gumb.getBackground() == Color.WHITE && gumb.getText() == "3") {
            Start.a += 1;
            gumbi[0][0].setText("" + Start.a);
        } else if (gumb.getBackground() == Color.BLACK && gumb.getText() == "3") {
            Start.a -= 1;
            gumbi[0][0].setText("" + Start.a);
        }
    }
}

Спасибо за ваше время.

Теги:

3 ответа

0
Лучший ответ

Это не очень хорошая практика, чтобы установить текст кнопки, чтобы использовать его в сравнении и т.д., Вы должны найти другой способ сделать это; возможно, измените свой объект gumbi на карту.

Если вы настаиваете на использовании setText вы можете установить тот же цвет для backgroud и текста.

gumbi[i][j].setBackground(Color.WHITE);
gumbi[i][j].setForeground(Color.WHITE);
  • 0
    или gumbi[i][j].setForeground(gumbi[i][j].getBackground());
2

Я понимаю, что вам нужно хранить некоторые данные в ваших кнопках, чтобы отличать их в своем ActionListener. Для этого есть конструкция: команды действий. Команда действий - это то, что позволяет поместить любой текст на кнопку (подумайте об i18n, "Quit" -en, "Quitter" -fr) и сопоставьте данную семантику с этой кнопкой ("QuitCommand" внутри вашего приложения).

Вы можете связать команду действия с кнопкой setActionCommand(String) в любое время и получить ее с помощью String getActionCommand() в своем слушателе.

0

Не используйте текст кнопок, чтобы определить, какая кнопка была нажата, установить и использовать команду действий кнопок:

private static final String ACTION_COMMAND = "1";

...

JButton jbutton = new JButton();
jbutton.setActionCommand(ACTION_COMMAND);

...

if ( action.getActionCommand().equals(ACTION_COMMAND) )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню