Как установить цвет для определенной строки, если определенные условия выполняются с помощью java?

У меня есть A jtable. (Tablesummary). один из его столбцов – EXPIRY. Я хочу выделить строку с клиентом, срок годности которого уже истек в текущую дату ..

У меня уже есть логика, но я не могу сделать строку красной или любых других цветов. вот мой код:

int count = (tableSummary.getRowCount()); NumberFormat formatter = new DecimalFormat("###,###"); String no = formatter.format(count); txtNo.setText(no); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); String expDateString = sdf.format(cal.getTime()).toString(); for(int i=0; i=0){ System.out.println("if ni " + (res>=0)); } else{ System.out.println("else ni" + (res>=0)); rowrenderer.setBackground(Color.RED); } } 

Кто-нибудь может мне с этим помочь? потому что это один из основных моментов моего интерфейса. Заранее спасибо !! 🙂

В следующей ссылке вы можете найти пример действия, которое вы хотите выполнить: http://www.roseindia.net/java/example/java/swing/SadingRows.shtml

Вы должны переопределить prepareRenderer() в JTable и добавить backgroundColor в Component который возвращается.

PS: для дальнейшего использования было бы проще, если бы вы включили больше кода. Определение вашего rowrenderer =)

РЕДАКТИРОВАТЬ

Вместо обычного JTable table = new JTable(model) используйте следующее (измените логику в методе prepareRenderer если вы хотите что-то другое, чем чередующийся цвет):

 JTable table = new JTable(model) { public Component prepareRenderer(TableCellRenderer renderer, int Index_row, int Index_col) { // get the current row Component comp = super.prepareRenderer(renderer, Index_row, Index_col); // even index, not selected if (Index_row % 2 == 0 && !isCellSelected(Index_row, Index_col)) { comp.setBackground(Color.lightGray); } else { comp.setBackground(Color.white); } return comp; } }; 

… описанные в предыдущих streamах и ответах, только пример

введите описание изображения здесь

от кода

 import java.awt.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; import javax.swing.border.LineBorder; import javax.swing.table.*; public class TablePrepareRenderer extends JFrame { private static final long serialVersionUID = 1L; private JTable table; private Date maturityDate = new Date(); private Date todayDate = new Date(); private SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); private Date tableDate = new Date(); private String strDate = ""; private Date modifDate = new Date(); private Calendar cal; public TablePrepareRenderer() { Object[] columnNames = {"Type", "Company", "Shares", "Price", "Date"}; Object[][] data = { {"Buy", "IBM", new Integer(1000), new Double(80.50), new Date()}, {"Sell", "MicroSoft", new Integer(2000), new Double(6.25), new Date()}, {"Sell", "Apple", new Integer(3000), new Double(7.35), new Date()}, {"Buy", "Nortel", new Integer(4000), new Double(20.00), new Date()} }; DefaultTableModel model = new DefaultTableModel(data, columnNames) { private static final long serialVersionUID = 1L; @Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } }; table = new JTable(model) { private static final long serialVersionUID = 1L; @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); /*int firstRow = 0; int lastRow = table.getRowCount() - 1; if (row == lastRow) { ((JComponent) c).setBackground(Color.red); } else if (row == firstRow) { ((JComponent) c).setBackground(Color.blue); } else { ((JComponent) c).setBackground(table.getBackground()); }*/ if (!isRowSelected(row)) { if (table.getColumnCount() >= 0) { String type = (String) getModel().getValueAt(row, 0); c.setBackground("Buy".equals(type) ? Color.YELLOW : Color.GREEN); // maturityDate = new Date(); todayDate = new Date(); strDate = sdf.format(todayDate); try { todayDate = sdf.parse(strDate); } catch (ParseException ex) { Logger.getLogger(TablePrepareRenderer.class.getName()).log(Level.SEVERE, null, ex); } tableDate = (Date) table.getValueAt(row, 4); strDate = sdf.format(tableDate); if (strDate != null) { if (!strDate.isEmpty()) { try { maturityDate = sdf.parse(strDate); } catch (ParseException ex) { Logger.getLogger(TablePrepareRenderer.class.getName()).log(Level.SEVERE, null, ex); } if (maturityDate != null) { int mmDiffDealToValue = (maturityDate).compareTo(todayDate); if (((mmDiffDealToValue < 0))) { c.setBackground(Color.orange); c.setFont(new Font("Serif", Font.BOLD, 12)); } } } } // } } if (isRowSelected(row) && isColumnSelected(column)) { ((JComponent) c).setBorder(new LineBorder(Color.red)); } return c; } }; modifyDateInTable(); table.setPreferredScrollableViewportSize(table.getPreferredSize()); JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane); } private void modifyDateInTable() { Calendar c = Calendar.getInstance(); c.setTime(modifDate); c.add(Calendar.DATE, - 1); modifDate = c.getTime(); table.setValueAt(modifDate, 0, 4); c.setTime(modifDate); c.add(Calendar.DATE, +5); modifDate = c.getTime(); table.setValueAt(modifDate, 1, 4); c.setTime(modifDate); c.add(Calendar.DATE, +1); modifDate = c.getTime(); table.setValueAt(modifDate, 1, 4); c.setTime(modifDate); c.add(Calendar.DATE, - 16); modifDate = c.getTime(); table.setValueAt(modifDate, 3, 4); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { TablePrepareRenderer frame = new TablePrepareRenderer(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.pack(); frame.setLocation(150, 150); frame.setVisible(true); } }); } } 

введите описание изображения здесь

public class TablePrepareRenderer расширяет JFrame {

 private JTable table; public TablePrepareRenderer() { Object[] columnNames = { "Type", "Company", "Name", "Salery", "Designation" }; Object[][] data = { { "Probation", "Digital Research Lab", "Kamran Ali", "500,000", "Java Developer" }, { "Permenent", "Netsole", "Farhan Khan", "80,000", "System Administaror" }, { "Contract", "System Limited", "Danyal", "100,000", "Network Administrator" }, { "Probation", "TeraData", "Ali Raza", "45,000", "IT Officer" }, { "Contract", "MicroSoft", "Sikandar Hayat", "450,000", "Team Lead" }, { "Permenent", "MicroSoft", "Adnan", "30,000", "Driver" }, }; DefaultTableModel model = new DefaultTableModel(data, columnNames) { @Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } }; table = new JTable(model) { @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); if (!isRowSelected(row)) { if (table.getColumnCount() >= 0) { String type = (String)getModel().getValueAt(row, 0); if (type.equalsIgnoreCase("Probation")) { c.setBackground(new Color(198, 190, 255)); } if (type.equalsIgnoreCase("Permenent")) { c.setBackground(new Color(14, 255, 190)); } if (type.equalsIgnoreCase("Contract")) { c.setBackground(Color.green); } } } if (isRowSelected(row) && isColumnSelected(column)) { ((JComponent)c).setBorder(new LineBorder(Color.red)); } return c; } }; table.setPreferredScrollableViewportSize(table.getPreferredSize()); JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { TablePrepareRenderer frame = new TablePrepareRenderer(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.pack(); frame.setLocation(150, 150); frame.setSize(800, 500); frame.setVisible(true); } }); } 

}

  • JavaFX WebView растет, чтобы заполнить всю область
  • изображения не загружаются
  • Несколько строк заголовка JTable
  • JPanel и компоненты меняются автоматически
  • SwingWorker, Thread.sleep () или javax.swing.timer? Мне нужно «вставить паузу»,
  • Перетаскивание пользовательского объекта из JList в JLabel
  • JFileChooser.showSaveDialog (...) - как установить предлагаемое имя файла
  • Как добавить строку в JTable?
  • Откройте JPanel после нажатия кнопки в JFrame
  • Изменение цвета ячеек Java JTable
  • Каковы хорошие frameworks стыковки для Java / Swing?
  • Interesting Posts

    Msgstr “Ликвидировать CSS-рендеринг с помощью надстрочного содержимого”

    Добавить кнопки для просмотра, возвращенные методом делегирования markerInfoWindow

    У меня есть доменное имя, которое я хочу перенаправить на локальный сервер. Как мне это сделать?

    Почему в некоторых телефонах ошибка «Это приложение было построено с неправильной конфигурацией»?

    Группа по переменному целочисленному диапазону с использованием Linq

    Ошибка сборки сборки: путь … уже сопоставлен с рабочей областью

    Как каскадировать окна по вертикали или по горизонтали в Windows 7?

    Графики Matplotlib теряют прозрачность при сохранении как .ps / .eps

    Отключение функции автозаполнения Android O для приложения

    Загрузите старую версию пакета с nuget

    Как зарегистрировать DLL-файл .NET в GAC?

    Как вы отображаете fragmentы кода в формате сохранения MS Word и подсветки синтаксиса?

    Как запустить Java-приложение с помощью файла .bat

    Как создать пользовательский BaseAdapter для AutoCompleteTextView

    Как удалить интеграцию с оболочкой Notepad ++?

    Давайте будем гением компьютера.