コンボ ボックスを作成し、テーブルの列に追加しようとしています。この例を使用します。私がやろうとするとcol5.setCellRenderer(cmbRender);
、スローされます:
「ComboBoxRenderer は TableCellRenderer に変換できません」。
ComboxRenderer
class ComboBoxRenderer extends JLabel
implements ListCellRenderer {
private Font uhOhFont;
public ComboBoxRenderer() {
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
int selectedIndex = ((Integer)value).intValue();
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
String[] petStrings = {"Bird", "Cat", "Dog", "Rabbit", "Pig"};
String pet = petStrings[selectedIndex];
setUhOhText(pet + " (no image available)",
list.getFont());
return this;
}
protected void setUhOhText(String uhOhText, Font normalFont) {
if (uhOhFont == null) { //lazily create this font
uhOhFont = normalFont.deriveFont(Font.ITALIC);
}
setFont(uhOhFont);
setText(uhOhText);
}
}
私はこのように電話しようとします
ComboBoxRenderer cmbRender = new ComboBoxRenderer();
TableColumn col5 = jTable1.getColumnModel().getColumn(4);
col5.setCellRenderer(cmbRender);// give me error here
petString に割り当てられた値を使用して、テーブルの列に作成したいと考えています。ご意見をお聞かせください。
これは私がTextBoxに対して行う方法です
TextRenderer2 renderer2 = new TextRenderer2();
TableColumn col5 = jTable1.getColumnModel().getColumn(4);
MyTableCellEditor editor = new MyTableCellEditor();
col5.setCellEditor(editor);
col5.setCellRenderer(renderer2);
col5.setPreferredWidth(100);
TextRenderer
class TextRenderer2 extends JLabel implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
JPanel jp_panel = new JPanel();
JTextPane jta_text = new JTextPane();
JScrollPane jsp_scroll = null;
String valStr = value.toString();
jta_text.setText(valStr);
jp_panel.setLayout(new BorderLayout());
jsp_scroll = new JScrollPane(jta_text);
jp_panel.add(jsp_scroll, BorderLayout.CENTER);
return jp_panel;
}
}