2016-06-26 15 views
0

私はJtable Javaで自分のセルを色付けしたいですか?画像では、このように:私はJtable Javaで自分のセルを色付けしたいですか?

http://i.stack.imgur.com/yuzZR.png

私に感謝を助けるsameoneすることができます!

コードは、私が最後

import javax.swing.*; 

import javax.swing.table.AbstractTableModel; 

import javax.swing.table.DefaultTableCellRenderer; 

import java.awt.BorderLayout; 

import java.awt.Color; 

import java.awt.Component; 

public class Main 
{ 
     /** 
     * @param args 
     */ 
     public static void main(String[] args) 
     { 
       JFrame frame = new JFrame(); 
       frame.add(new JComboxTable(), BorderLayout.NORTH); 
       frame.setVisible(true); 
       frame.setSize(300, 300); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     } 
} 

class JComboxTable extends JTable 
{ 

     public static JComboBox cb; 

     public JComboxTable() 
     { 
       TableModel tree = new TableModel(); 
       TableRenderer render = new TableRenderer(); 
       setModel(tree); 
       setDefaultRenderer(Object.class, render); 
       tree.fireTableDataChanged(); 
     } 

} 

class TableModel extends AbstractTableModel 
{ 

     public int getColumnCount() 
     { 
       return 2; 
     } 

     public int getRowCount() 
     { 
       return 5; 
     } 

     @Override 
     public Class<?> getColumnClass(int columnIndex) 
     { 
       if (columnIndex == 0) 
       { 
         return String.class; 
       } 
       else 
       { 
         return Color.class; 
       } 
     } 

     public Object getValueAt(int rowIndex, int columnIndex) 
     { 
       if (columnIndex == 0) 
       { 
         return "Salut" + rowIndex; 
       } 
       else 
       { 
         if((rowIndex % 2) == 0) 
         { 
           return Color.RED ; 
         }else 
         { 
           return Color.BLUE ; 
         } 
       } 
     } 

} 

class TableRenderer extends DefaultTableCellRenderer 
{ 

     public Component getTableCellRendererComponent(JTable table, Object value, 
         boolean isSelected, boolean hasFocus, int row, int column) 
     { 
       if (value instanceof Color) 
       { 
         setBackground((Color) value); 
         setText(""); 
       } 
       else 
       { 
         setBackground((Color)table.getModel().getValueAt(row, 1)); 
         setText( (String)value); 
       } 

       return this; 
     } 

} 
} 
+1

純粋なコードの書き込み要求は、スタックオーバーフローに関するトピックではありません。 の質問は、*具体的なプログラミングの問題に関連していると思いますが、 はあなた自身で書くことをお手伝いします! [あなたが試したこと](http://stackoverflow.com/help/how-to-ask)、およびあなたが立ち往生している場所を教えてください。 これはまた、あなたの質問によく答えるのにも役立ちます。 –

答えて

0

使用して、カスタムレンダラを試してみました。

動作例については、Using Custom RenderersのSwingチュートリアルのセクションを参照してください。

+0

ありがとうMr camickr(y) – AnouarLouardighi

関連する問題