私はスイングでゲームのインターフェースを実装しています。このゲームにはjtableで表されるボードがあります。 >緑色 2 - - >赤 等 1:私はこのように、代わりに数字の「O」着色テーブルショーをしたいと思いprepareRendererのJavaスイングの問題
0〜6
各セルは番号を持っています... 私はこれを実装している:
public class DTable extends JTable{
@Override
public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int columnIndex){
Component component = super.prepareRenderer(renderer, rowIndex, columnIndex);
component.setBackground(Color.WHITE);
component.setForeground(Color.BLACK);
if ((getValueAt(rowIndex, columnIndex) != null)){
String val = (String) getValueAt(rowIndex, columnIndex);
setValueAt("O", rowIndex, columnIndex);
System.out.println("el valor de val es "+val);
if ("0".equals(val)){
Color col = new Color(255,255,255);
component.setForeground(col);
}
else if ("1".equals(val)){
Color col = new Color(255,114,145);
component.setForeground(col);
}
else if ("2".equals(val)){
Color col = new Color(255,0,0);
component.setForeground(col);
}
else if ("3".equals(val)){
Color col = new Color(52,146,153);
component.setForeground(col);
}
else if ("4".equals(val)){
Color col = new Color(0,3,204);
component.setForeground(col);
}
else if ("5".equals(val)){
Color col = new Color(191,206,20);
component.setForeground(col);
}
else if ("6".equals(val)){
Color col = new Color(20,206,98);
component.setForeground(col);
}
System.out.println("que pasa aqui");
}
return component;
}
問題は、それが細胞にすべての黒「O」を置くことです。 "val"の値を表示しようとすると、最初の行は0と6の間の数値を返しますが、それは常に "O"を表示します。
ここでの問題は、私がprepareRendererを正しく使用していないことですが、私は本当に分かりません。 また、このメソッドを使用すべきではないと思われる場合は、セルの数値を "O"に変更する方法についての提案があります。 ありがとう!
:デフォルトのレンダラを使用すると、のような何かを行うことができますので、JLabelのです)。 –