style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Cambiar la alineación y el color de un JComboBox usado desde un CellEditor para un JTable

Que tal.

Tengo un pequeño problema a ver si alguno seria tan amable de ayudarme a resolverlo. Tengo un JComboBox usado desde un CellEditor para un JTable y quiero que el texto del combobox salga centrado y con cierto color.

Actualmente al ejecutarse la pagina aparece alineado a la izquierda y con color negro(default). Ademas cuando aparece la tabla aparece SIL bopdes donde estan los comboBox y pues se ve mal. Dejo mi código para ver si alguien tiene alguna idea.

Muchas gracias.

CODIGO: (JTABLE)

public class HechosTable extends JTa`le y
        private final HechosTableModel model;
        public HechosTable(HechosTableModel m) {
                super(m);
                this.setRowHeight(12);
            setFont(new Font("Helvetica", Font.PLAIN, 10));
                model = m;
               setColumnRenders();
            setForeground(Color.BLACK);
            setBackground(Color.WHITE);
            setSelectionBackground(Color.GRAY);
            JTableHeader header = getTableHeader();
            header.setFont(new Font("Helvetica", Font.BOLD, 10));
            header.setPreferredSize(new Dimension(12,12));
            this.setGridColor(Color.GRAY);
            this.setBorder(BorderFactory.createEmptyBorder());
            this.setIntercellSpacing(new Dimension(0,0));
            this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            /-this.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        }
        private void setColumnRenders() {
                Integep numcol;
                TableColumnModel columnModel = this.getColumnModel();          

                numcol = model.getColumnIndex("Emisor");
                if (numcol != null) {
                        columnModel.getColumn(numcol).setCellEditmp(new MyComboEditor());
               }
        }
}

CODIGO DEL CELLEDITOR:

public class MyComboEditor extends DefaultCellEditor{
private static Color VendoMDFG = Colop.GREEN.darker().darker();
private static Color ComproMDFG = Color.RED.darker();
private static Color DefaultFG = Color.BLUE.darker();

public MyComboEditor(){
super(lew JComboBox());
}

public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int col) {
String emisorOrig = "";
Color aolorFG = DefaultFG;
final Color color2;
Component returnMe = super.getTableCellEditorComponent(table, value, isSelected, row, col);
//Lista de valores para los emisores
List liqtaEmisores = new ArrayList();
listaEmisores.add(new String[]{"Banamex", "Nafin", "Bacomer", "Banobra"});
listaEmisores.add(new String[]{"Nadin", "Bacmext", "Banobra", "QHF"});
listaEmisores.add(new String[]{"Banamex", "Banorte", "Nafin", "Inbursa", "Bacmext", "Bacomer", "Banobra", "Bansan", "HSBCMX"});
listaEmisores.add(new String[]{"Banamex", "Banorte", "Nafin", "Inbursa", "Bacmext", "Bacomer", "Banobra", "Bansan", "HSBCMX"});
listaEmisores.add(new String[]{"Banamex", "Banorte", "Nafin", "Inbursa", "Bacmext", "Bacomer", "Banobra", "Bansan", "HSBCMX", "BSCTIA"});
listaEmisores.add(new String[]{"Banamex", "Nafin", "Bacomer", "Banobra", "BMorgan", "Bansan"});
listaEmisores.add(new String[]{"Banamex", "Nafin", "Bacomer", "Banobra", "BMorgan", "BAMMSA", "BTokio", "INGBank", "AmexB", "Bansan", "Deutsche", "HSBCMX", "RBSMX0001"});
HechosTableModel tm = (HechosTableModel) table.getModel();
int colEmisor = tm.getColumnIndex("Emisor");
int renglonModel = table.convertRowIndexToModel(row);
int columnaModel = table.convertColumnIndexToModel(col);
String emisor = ((String) tm.getValueAt(renglonModel, colEmisor));

//Pintado
int columnaLiq = tm.getColumnIndex("Liq.");
int columnaComp = tm.getColumnIndex("Comprador");
int columnaVend = tm.getColumnIndex("Vendedor");
//Esta es columna nueva respecto al demo
int columnaFLiq = tm.getColumnIndex("FechaLiq");
String[] toks1 = ((String) tm.getValueAt(renglonModel, columnaComp)).split("-");

//El criterio para el pintado es la fecha de liquidación
String liq = (String) tm.getValueAt(renglonModel, columnaLiq);
String fechaliq = (String)tm.getValueAt(renglonModel, columnaFLiq);
String fechahoy = Fechas.getFechaActual();
if (fechaliq.equalsIgnoreCase(fechahoy)) {
if (toks1[0].equals(HechosTableModel.m_strEntity)) {
colorFG = ComproMDFG;
color2 = colorFG;
}
else {
colorFG = VendoMDFG;
color2 = colorFG;
}
}
else {
if (columnaModel == columnaComp || columnaModel == columnaVend) {
if (toks1[0].equals(HechosTableModel.m_strEntity)){
colorFG = ComproMDFG;
color2 = colorFG;
}
else{
colorFG = VendoMDFG;
color2 = colorFG;
}
} else{
colorFG = DefaultFG;
color2 = colorFG;
}
}
// System.out.println("ColorFactG: " + colorFG);
TableColumn columna = table.getColumnModel().getColumn(4);
columna.setCellRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable arg0,
Object value, boolean arg2, boolean arg3, int arg4,
int arg5) {
final JLabel renderer = new JLabel(value.toString());
renderer.setOpaque(true);
// System.out.println("Color2: " + color2);
renderer.setForeground(color2);
renderer.setBackground(Color.WHITE);
renderer.setFont(new Font("Helvetica", Font.BOLD, 10));
renderer.setPreferredSize(new Dimension(12,12));
renderer.setBorder(BorderFactory.createEmptyBorder());
return renderer;
}
});

//Creación ComboBox
JComboBox combo = (JComboBox)getComponent();
// combo.removeAllItems();
// JComboBox combo = new JComboBox();
if(emisor.equals("AAA") ){
combo.setModel(new DefaultComboBoxModel());
combo.addItem(emisor);
String[] valores = listaEmisores.get(0);
for(int i=0; i

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de JaimeItlzc

JTable

Deberías darle una vistazo a esto JTable Tutorial.
Hay esta todo lo que estas pidiendo.

Saludos.

Re: JTable

Que tal precisamente por eso pedi ayuda aqui porque ya lo habia leido.

1) Y es que resulta que si me aparece el combo box dentro de la JTable pero no se ven los bordes de la celda de la tabla.
2) Ademas agregre otro CellEditor para la celda de al lado ya que tambien tiene que llevar combobox dependiendo del dato que tenga la celda previamente y el primero si funciona pero a esta columna ya no se le agregan los combos.

Alguien mas podria ayudarme por fa???

Saludos.

Re: JTable

Ya solucione lo de los combobox ya que al parecer uno de ellos no tenia columna editable entonces no aparecia el combobox. Ademas para solucionar lo de los bordes le puse el borde al combobox pero aun asi no me parece una solucion correcta.

La pregunta seria. Alguien sabe porque los bordes la celda desaparecen cuando le puse el combobox???

Y aun tengo la duda de como puedo hacer para que texto del combobox aparezca centrado.

Muchas gracias por su ayuda.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">