2016-04-08 1 views
0

色に基づいて宿泊施設内の予約を示す色ベースのデータベースプログラムで作業しています。私が抱えていた問題は、テーブルには367の列(宿泊施設の名前と1年のすべての日)があるということです。私が抱えていた問題は、最初の列を作成する方法を理解できないということです行の列は文字列を表示し、残りは色を表示します。最初のものだけがテキストを持ち、残りの部分に色がある367個のセルを持つJTableで行を作成する方法

色を表示する必要がある基本レンダラーを作ったが、使用方法はわからない。

public class MyRenderer extends DefaultTableCellRenderer{ 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    { 
     Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
     if (! table.isRowSelected(row)) 
     { 
      if(row == 2 && column == 2) 
       c.setBackground(new java.awt.Color(0, 0, 255)); 
      else 
       c.setBackground(table.getBackground()); 
     } 
     return c; 
    } 
} 

これをJTableとどのように統合すればよいですか?

PS私は表示したいヘッダーがありますが、最初に行を空にする必要があります。ボタンを押すと、行が追加されます。私は現時点でのCellRenderer

で助けを必要と私は自分自身を作ることができ、この最後のボタンは私のJTableのは、このように初期化されます:JTable table = new JTable();

誰もが任意のヒントを持っていますか?

+0

置きます 'TableModel'に必要な情報は、[値]を取り、必要な色に変換し、[例](HTTPなどの背景 – MadProgrammer

+0

を設定し、カスタム' TableCellRenderer'を提供:// (http:http://www.windowsfiles.jp/fairu/testoverflow/questions/30552644/how-do-i-color-individual-cells-of-a-jtable-based-on-the-value-in-the-cell/30553979#30553979)と[example] ://stackoverflow.com/questions/28082098/how-to-give-a-jtable-cell-different-background-colour/28082202#28082202) – MadProgrammer

答えて

2

1日に2つの州があり、予約されているかどうかはわかりません。したがって、valueはブール値です。レンダラーはクラスの種類によって設定できます。例えば:それと

table.setDefaultRenderer(Boolean.class, new MyRenderer()); 

になりますあなたのレンダラは、valueがブール値である場合にのみ使用します。

public class MyRenderer extends DefaultTableCellRenderer{ 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    { 
     Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 

      if(value) 
       c.setBackground(/*Color for booked days*/); 
      else 
       c.setBackground(table.getBackground()); 

     return c; 
    } 
} 
+0

予約した人数に応じていくつかの色が表示されます代わりにintを使うだけでしょうか? – BRHSM

+0

さまざまな状況で 'enum'を使うことができます。 'public enum RoomState {AVALIABLE、BOOKED、BOOKED2}' – rdonuk

+0

そして、cellrendererの色は状態によって決まります。 – rdonuk

関連する問題