2012-01-25 8 views
2

私は学校プロジェクトでMinesweeperを作っています。フィールド/ボタンをクリックすると、無効になり、近隣の人の数に応じて異なる色の隣人が表示されます。私はEclipseでこれに取り組んでいます。それは完全にすべて動作し、私はそれを提出するためにほとんど準備ができています。唯一の問題は、EclipseとJCreatorで色を動作させることですが、.bat /コマンド(java Minesweeper)で色を実行すると、色がグレー表示されて灰色で表示されます。JButtonが無効になっていると、テキストがグレー表示されます

setText()を呼び出すと、htmlタグで色が変わります。例:setText("<html><font color=red>3</font></html>")など

どうしてですか?それは私のために動作しません...

コンパイルとEclipse/JCreatorでこれを実行します。色は、これを試してみてください

をエクリプス/ JCreatorでうまく動作ではなく、私はcmdを介してゲームを実行するとき、またはバッチスクリプト。次に、Eclipseの/ 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

私のシステム上のjavaのコマンドはJRE 1.7.0になっていますJRE 1.6.0_29の代わりに_1を使用しました(ただし、JRE 7のディレクトリをPATH変数に追加したことはありません...)。何らかの理由で、このコードは2つのJREで異なる動作をします。 JRE 7では、テキストがグレー表示されます。 JRE 6では、それは私が望むやり方で動作し、テキストはグレー表示されません。

+0

Swing HTMLレンダリングでこの[10 yo(closed)バグ](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4783068)を修正した可能性はありますが、修正済みとマークするのを忘れましたか? !? –

+0

ところで - これは述べられた質問に答えるようです。あなたが同意するならば、あなたが瞬時にそれを正しいとマークしてください。 **なぜレンダリングが異なるのかについては、別の質問のための価値ある話題になります。 –

+0

何ですか?それは実際には不具合でしたか?ワオ – Alex

3

あなたは、たとえば、JButton#isEnabled()をテストする必要が

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

非常にいいですJButton#setDisabledIcon(Icon) too

+1

またはUIのデフォルトを変更してください。 – mre

関連する問題