Стирание JTable BOTTOM белая рамка - PullRequest
1 голос
/ 08 июля 2011

После стирания границ и заголовков мой JTable выглядит следующим образом:

enter image description here

Как видите, белая граница видна внизу таблицы, и я вижунет причин в моем коде для этого.Как я могу стереть это?

Код для JTable:

Object[][] datosMeasurements = {};
    DefaultTableModel model = new DefaultTableModel(datosMeasurements, nombresColumnasTablas);
    tablaMeasurements = new JTable(model){
      public boolean isCellEditable(int rowIndex, int colIndex) {
            if(colIndex==1){
                return true;
            }
            return false;   //Disallow the editing of any cell
      }
    };
    model.addTableModelListener(new CambioTablaMeasurementListener());
    TableCellRenderer rendererMeasurements = new paramRenderer();
    tablaMeasurements.setDefaultRenderer(Object.class, rendererMeasurements);
    ((DefaultCellEditor) tablaMeasurements.getDefaultEditor(Object.class)).setClickCountToStart(1);

    JScrollPane scrollMeasurements = new JScrollPane(tablaMeasurements);
    tablaMeasurements.setTableHeader(null);
    scrollMeasurements.setColumnHeaderView(null);
    tablaMeasurements.setPreferredScrollableViewportSize(new Dimension(100,100));

И для его средства визуализации:

class paramRenderer extends DefaultTableCellRenderer
{
    private final DecimalFormat formatter = new DecimalFormat( "#.000" );
    public Component getTableCellRendererComponent(
                    JTable table,
                    Object value,
                    boolean isSelected,
                    boolean hasFocus,
                    int row,
                    int column)
    {
        //value = formatter.format((Number)value);
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        setEnabled(table == null || table.isEnabled());

        if (column == 0)
            setHorizontalAlignment( RIGHT );
        else if (column == 1)
            setHorizontalAlignment( CENTER );
        else
            setHorizontalAlignment( LEFT );    

        for (int i=0; i<3; i++) {
              TableColumn columna = table.getColumnModel().getColumn(i);
              if (i==0) columna.setPreferredWidth(65);
              if (i==1) columna.setPreferredWidth(75);
              if (i==2) columna.setPreferredWidth(30);
            }

        if(isSelected)
        {
            setBackground(table.getBackground());
            setForeground(table.getForeground());
            if (row==0 || row==2) setBackground(new java.awt.Color(211, 217, 255));
            else setBackground(java.awt.Color.white); 
        }
        else
        {
            setBackground(table.getBackground());
            setForeground(table.getForeground());
            if (row==0 || row==2) setBackground(new java.awt.Color(211, 217, 255));
            else setBackground(java.awt.Color.white); 
        }

        return this;
    }
    public void setValue() {    
        formatter.setMinimumFractionDigits(1);
        formatter.setMaximumFractionDigits(3);
    }
}

}

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

вычисляет prefScrollableViewportSize в терминах rowHeight, что-то вроде

int visibleRowCount = 10;
table.setPreferredScrollableViewportSize(
     new Dimension(myWidth, visibleRowCount * table.getRowHeight()));
1 голос
/ 08 июля 2011

Вероятно, таблицы "viewPort".Вы можете попробовать с:

yourTable.setFillsViewportHeight(true);
...