Olá
Por favor, analisem e executem o seguinte exemplo:
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
public class TableCombo extends JFrame {
private static class Row {
private String id, val, extra;
public Row(String id, String val, String extra) {
this.id = id;
this.val = val;
this.extra = extra;
}
public String getId() {
return id;
}
public String getVal() {
return val;
}
public String getExtra() {
return extra;
}
}
private static class RowCellRenderer extends JTable implements
ListCellRenderer {
public RowCellRenderer() {
setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
}
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected,
boolean
cellHasFocus)
{
setModel(new RowTableModel((Row) value));
if (isSelected) {
getSelectionModel().setSelectionInterval(0, 0);
}
return this;
}
}
private static class RowTableModel extends AbstractTableModel {
private Row row;
public RowTableModel(Row row) {
this.row = row;
}
public int getRowCount() {
return 1;
}
public int getColumnCount() {
return 3;
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex) {
case 0:
return row.getId();
case 1:
return row.getVal();
case 2:
return row.getExtra();
}
return null;
}
}
protected void frameInit() {
super.frameInit();
setLayout(new FlowLayout());
setTitle("JComboBox contendo JTable");
JComboBox box = new JComboBox(new Row[] {
new Row("Row 1", "Row 1 value", "Row 1 Extra value"),
new Row("Row 2", "Row 2 value", "Row 2 Extra value"),
new Row("Row 3", "Row 3 value", "Row 3 Extra value"),
new Row("Row 4", "Row 4 value", "Row 4 Extra value"),
});
box.setPreferredSize(new Dimension(450,16));
box.setRenderer(new RowCellRenderer());
add(box);
}
public static void main(String[] args) {
JFrame f = new TableCombo();
f.setPreferredSize(new Dimension(500,80));
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Vejam que quando um item é selecionado, as dimensões da linha
ficam menores… Esse é meu problema, tem como configurar
a largura da linha no item selecionado?
Agradeço se puderem responder.