1

わかりました、私は過去の露の時間のためにこれを試みてきましたが、それは絶望的になっています.

そこで、2列目にセルレンダーを適用したいと思います。

stockTable.setCellRender(jtSpread.getColumnModel().getColumn(1));

呼び出されるメソッドは、次のコードを持つ setCellRender です。

public void setCellRender(TableColumn column)
{
    column.setCellRenderer(new cellRenderer(data, rows));
}

私の CellRenderer クラスには次のコードがあります。

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

  for(int i = 0; i < rows; i++) {
      if(row == i && column == 2) {

      }
  }
  return this;
}

上記は不完全で、完全に混乱しています。私の目的は、各セルの条件をチェックすることです。真の場合は、前景が緑のラベルを返します。false の場合、前景が赤のラベルを返します。列内のすべてのセルを1つずつ確認したいのですが、各条件は各セルに固有です。

編集:たとえば、独自の条件を持つ各セルに関して。

最初のセルの値は 600 です。配列 [0] の内容を確認したいのですが、配列 [0] の内容が大きい場合はセルを緑に、そうでない場合は赤にします。

2 番目のセルの値は 626 です。配列 [1] の内容が大きい場合は、配列 [1] に対してチェックしたい場合は、セルを緑に、それ以外の場合は赤にします。

配列内のすべての値に対して、列内のすべてのセルに対して続行したい

4

2 に答える 2

5

レンダラーが DefaultTableCellRenderer を拡張していることを確認してください。

CellRenderer extends DefaultTableCellRenderer {
   ...  

次に、getTableCellRendererComponent()次のようになります (このメソッドは、セルがレンダリングされるたびに呼び出されます)。

public Component getTableCellRendererComponent(JTable table, Object value, 
    boolean isSelected, boolean hasFocus, int row, int column) {

    Component cellComponent = super.getTableCellRendererComponent(
          table, value, isSelected, hasFocus, row, column);
     cellComponent.setForeground(isMyConditionFullfilled(value) ? Color.GREEN : Color.RED);
     return cellComponent;    
}
于 2012-03-10T21:37:36.500 に答える
1

レンダー クラスは TableCellRender を実装する必要があります。レンダー クラスでこれを試してください。

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        JLabel label = new JLabel();
        label.setOpaque(true);
        if (value != null && value.equals("text")) { //Checking if  cell´s values isnt null and the condition is true
            label.setBackground(Color.GREEN);
        }else{
            label.setBackground(Color.RED);
        }
        return label;
    }

レンダリングは、各セルを独自にチェックします。各セルをレンダリングする方法を指示するだけです。変数「値」には各行の値が含まれているため、これを使用して状態を確認できます。列に型が定義されている場合は、変数「値」をキャストします。たとえば、セルに Double 型が定義されている場合:

double valDouble = (Double) value;
if (value != null && value == 5.00) { //Checking if  cell´s values isnt null and the condition is true
        label.setBackground(Color.GREEN);
 }else{
        label.setBackground(Color.RED);
  }
于 2012-03-10T21:42:36.963 に答える