2012-01-25 3 views
2

저는 학교 프로젝트로 Minesweeper를 만들고 있습니다. 필드/버튼을 클릭하면 비활성 상태가되고 인접 항목 수에 따라 다른 색상의 이웃을 표시합니다. Eclipse에서이 작업을하고있다. 그것은 완벽하게 작동하며 거의 제출할 준비가되었습니다. 유일한 문제는 이클립스와 JCreator에서 실행될 때 색상이 작동하지만, .bat/명령 (java Minesweeper)으로 실행하면 색상이 회색으로 표시됩니다.JButton을 사용할 수 없으면 텍스트가 회색으로 표시됩니다.

setText()을 호출하면 색상이 html 태그로 변경됩니다. 예 : setText("<html><font color=red>3</font></html>")

왜 이런 일이 발생합니까? ... 그것은 나를 위해 작동하지 않습니다

컴파일 및 이클립스/JCreator이 실행 : 색상은 이클립스/JCreator에서 잘 작동하지만 내가 cmd를 통해 게임이나 배치 스크립트

을 실행할 때이 시도 . 그런 다음 이클립스/JCreator에서 실행하면 빨간색이 될 것입니다 java Test

텍스트를 사용하여 실행 시도하고 스크립트에서 실행할 때 회색

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); 
    } 
} 
+0

자급 자족하고 실행 가능한 코드 예제를 게시하면 도움이 될 것입니다. 사용자가 컴파일하고 실행할 수있는 것입니다. – Paul

+0

있습니다. 내 지뢰 찾기 코드와 유사한 코드를 추가하고 내 문제를 복제합니다. – Alex

+0

Eclipse (Helios)와 명령 줄'java Test' (java_1.6.0)에서 동일한 동작을 봅니다. 아마도 당신은 Eclipse와 명령 행을 위해 정의 된 다른 기본 jvm을 가지고있을 것입니다. – crowne

답변

2

는 JRE 1.7.0 내 시스템 포인트에서 명령 java을 밝혀 JButton#setDisabledIcon(Icon)입니다 JRE 1.6.0_29 대신 _1을 사용합니다 (비록 JRE 7의 디렉토리를 PATH 변수에 추가 한 적이 없지만 ...). 그리고 어떤 이유로이 코드는 두 JRE에서 다르게 동작합니다. JRE 7에서는 텍스트가 회색으로 표시됩니다. JRE 6에서는 원하는대로 동작하고 텍스트가 회색으로 표시되지 않습니다.

+0

Swing HTML 렌더링에서이 [10 yo (폐쇄) 버그 (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4783068)를 고쳤을 수도 있지만이를 고정으로 표시하는 것을 잊었습니까? !? –

+0

BTW - 이것은 명시된 질문에 대답하는 것 같습니다. 동의하는 경우 잠시 시간을 받으면 올바른 것으로 표시하십시오. ** 렌더링 **이 다른 이유는 다른 질문에 대한 가치있는 주제입니다. –

+0

무엇? 그것은 실제로 결함 이었습니까? 와우 – Alex

3

당신은 예를 들어, JButton#isEnabled()을 테스트해야

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

매우 좋은 너무

+1

또는 UI 기본값을 변경하십시오. – mre

관련 문제