Текст отключен, когда JButton отключен - PullRequest
2 голосов
/ 25 января 2012

Я делаю Сапер для школьного проекта.При щелчке по полю / кнопке он отключается и отображает соседей другим цветом в зависимости от количества соседей.Я работаю над этим в Eclipse.Все работает отлично, и я почти готов представить его.Единственная проблема заключается в том, что цвета работают при запуске в Eclipse и JCreator, но когда я запускаю его с помощью команды .bat / (java Minesweeper), цифры отображаются серыми вместо цветных.

Iизменить цвета с помощью HTML-тегов, когда я звоню setText().Пример: setText("<html><font color=red>3</font></html>") и т. Д.

Почему это происходит?Цвета отлично работают в Eclipse / JCreator, но не тогда, когда я запускаю игру через cmd или пакетный скрипт

Попробуйте: это не работает для меня ...

Скомпилируйте изапустите это в Eclipse / JCreator.Затем попробуйте запустить его, используя java Test

Текст будет красным при запуске в Eclipse / JCreator и серым при запуске в скрипте

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

class Test {
    public static void main(String[] args) {
        JFrame mainFrame = new JFrame("Test");
        JButton testButton = new JButton("Click this");

        MouseAdapter buttonListener = new MouseAdapter() {
            public void mouseReleased(MouseEvent e) {
                int modifier = e.getModifiers();
                JButton clicked = (JButton)e.getSource();
                clicked.setForeground(Color.RED);
                clicked.setText("<html><font color=red>" + clicked.getText() + "</font></html>");
                clicked.setEnabled(false);
            }
        };

        mainFrame.setMinimumSize(new Dimension(640,480));
        mainFrame.getContentPane().add(testButton);
        testButton.addMouseListener(buttonListener);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
    }
}

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Вы должны проверить на JButton#isEnabled(), например,

JButton.setText("<html><font color="
  + (bClose.isEnabled() ? "black" : "red") + ">"
  + bClose.getText() + "</font></html>");

, и очень хорошо, что JButton#setDisabledIcon(Icon) тоже

2 голосов
/ 26 января 2012

Оказывается, команда java в моей системе указывает на JRE 1.7.0_1 вместо JRE 1.6.0_29 (хотя я никогда не добавлял каталог JRE 7 в переменную PATH ...). И по какой-то причине этот код ведет себя по-разному на двух JRE. 7-го июля текст становится серым. На JRE 6 он ведет себя так, как я хочу, и текст не становится серым.

...