JavaのJTableのセル単体の色設定
今日は
JavaのJtableの『マウスで選択したセル』の色を赤色に設定するコードを書きましたが、セル単体でバックグランドの色が変更できまず、行単位で変更されます。
又、変更のタイミングは、他のセルを、マウス選択したときに、以前のセルの行が赤く変更になります。
Q1)セル単体で、バックグランドの変更を行い、その変更タイミングは、クリックと同時に
行う様に改善したく質問いたします。
注)Java暦は、初心者で約2週間ですが。下記にソースを添付いたしますので、宜しくお願いいたします。
//==============================
package packageA;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class JTableTest2 extends JFrame{
public static void main(String[] args){
JTableTest2 test = new JTableTest2("T");
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
JTableTest2(String name){
setBounds( 0, 0, 400, 200);
setTitle(name);
String d[][] = {
{"A","8","7"},
{"B","6","5"},
{"C","7","6"}
};
String t[] = {"名","数","英"};
DefaultTableModel tm = new DefaultTableModel(d,t);
final JTable tablex = new JTable(tm);
/* final JTable tablex = new JTable(tm){
@Override
public Component prepareRenderer(TableCellRenderer tcr, int row, int column) {
Component c = super.prepareRenderer(tcr, row, column);
if (row == 2 && column == 2) {
c.setForeground(Color.BLUE);
c.setBackground(Color.RED);
} else {
c.setForeground(getForeground());
c.setBackground(getBackground());
}
return c;
}
};
*/
tablex.addMouseListener(
new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
int row=tablex.getSelectedRow();
int col=tablex.getSelectedColumn();
// TableCellRenderer tcr = tablex.getCellRenderer(row,col);
// Component c = tablex.prepareRenderer(tcr,row,col);
Component c = tablex.getComponentAt(row,col);
c.setForeground(Color.BLUE);
c.setBackground(Color.RED);
System.out.println(" "+row+" "+col);
}
}
);
JPanel p1 = new JPanel();
JScrollPane sp1 = new JScrollPane(tablex);
sp1.setPreferredSize(new Dimension(250, 80));
p1.add(sp1);
getContentPane().add(p1, BorderLayout.NORTH);
}
}
お礼
liar_adanさん、いつもいつも本当に貴重なアドバイスいただきありがとうございます。 >java.awt.Scrollbarでは駄目でしょうか? なるほど、スクロールバーですね。考えてみます。 なにやら相当難しいそうなので別の方法考えてみます。 ありがとうございました。