У меня есть таблица визуализатор, который делает строку в моей таблице красного цвета в зависимости от содержимого колонки 11. Это отлично работает и код ниже:Таблица визуализатора, где есть 2, если заявления
tableR = new JTable(modelR)
{
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
Font myFont = new Font("Arial",Font.PLAIN,10);
Font myFont1 = new Font("Arial", Font.BOLD,10);
int rowModelId = convertRowIndexToModel(row);
if (!isRowSelected(row)) {
if (tableR.getColumnCount() >= 0) {
String type = (String) getModel().getValueAt(rowModelId, 11);
c.setBackground("0.0".equals(type) ? Color.RED : Color.WHITE);
c.setForeground("0.0".equals(type) ? Color.WHITE : Color.BLACK);
c.setFont("0.0".equals(type) ? myFont1: myFont);
}
}
return c;
}
я теперь хотите дополнительно реализовать то же самое со столбцом 12, так что, если критерий выполняется, в этом случае «u» эта конкретная строка будет желтой. Моя попытка ниже, но теперь в таблице ничего не отображается. В дополнение к этому, что произойдет, если столбец 11 и столбец 12 будут окрашены - что произойдет в этом сценарии?
Вот моя попытка идти:
tableR = new JTable(modelR)
{
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
Font myFont = new Font("Arial",Font.PLAIN,10);
Font myFont1 = new Font("Arial", Font.BOLD,10);
int rowModelId = convertRowIndexToModel(row);
int rowModelId1 = convertRowIndexToModel(row);
if (!isRowSelected(row)) {
if (tableR.getColumnCount() >= 0) {
String type = (String) getModel().getValueAt(rowModelId, 11);
c.setBackground("0.0".equals(type) ? Color.RED : Color.WHITE);
c.setForeground("0.0".equals(type) ? Color.WHITE : Color.BLACK);
c.setFont("0.0".equals(type) ? myFont1: myFont);
}
if (tableR.getColumnCount() >= 0) {
String type = (String) getModel().getValueAt(rowModelId1, 12);
c.setBackground("u".equals(type) ? Color.YELLOW : Color.WHITE);
c.setForeground("u".equals(type) ? Color.WHITE : Color.BLACK);
c.setFont("u".equals(type) ? myFont1: myFont);
}
}
return c;
}
Почему на первом примере кода вы имеете в и г, в то время как на второй у вас есть только c? Кроме того, rowModelId и rowModelId1 будут иметь такое же значение, чтобы c сменила ту же строку. – Infested
@ Infested я удалил это сейчас, это было частью моего эксперимента, чтобы попытаться заставить его работать, думая, что если я создам еще один обработчик рендеринга с именем d, а затем верну как c, так и d, я верну оба рендерера. Я удалил его из вопроса сейчас, спасибо за указание, что вне – Ingram
как вы хотите, чтобы столбцы были нарисованы? когда выбран ряд или когда выбран столбец? или вы хотите нарисовать столбцы, которые не выбраны или что-то еще? – Infested