Может ли ячейка JTable быть сфокусирована, но не выбрана?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Может ли ячейка JTable быть сфокусирована, но не выбрана?

Сообщение Anonymous »

Представьте себе TableCellRenderer, который отображает логические значения в виде флажков (я знаю, что в Swing есть OOB, но по нескольким причинам нам нужны свои собственные)
Имеет ли эта проверка смысл ?

Код: Выделить всё

if (isSelected || hasFocus) {
checkbox.setBackground(table.getSelectionBackground());
}
Может ли ячейка JTable быть в фокусе, но не выбрана (может действительно произойти обратное, если разрешен выбор нескольких строк)?
Я использовал клавиатуру для перемещения фокуса, но каждый раз выбиралась и выделенная ячейка. В приведенной ниже демонстрации ни одна ячейка не окрашена в желтый цвет, даже если для навигации я использую клавиатуру. Такое ощущение, что выделенный объект является подмножеством выбранного

Код: Выделить всё

package demos.table;

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public class TableFocusDemo {

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Table Focus Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Sample data and column names
Object[][] data = {
{"John", Boolean.TRUE},
{"Alice", Boolean.FALSE},
{"Bob", Boolean.TRUE}
};
String[] columnNames = {"Name", "Active"};

JTable table = new JTable(new DefaultTableModel(data, columnNames));

table.getColumnModel().getColumn(1).setCellRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
JCheckBox checkBox = new JCheckBox();
checkBox.setSelected((Boolean) value);
if (isSelected) {
checkBox.setBackground(table.getSelectionBackground());
} else if (hasFocus) {
checkBox.setBackground(Color.YELLOW); // Different color for focus
} else {
checkBox.setBackground(table.getBackground());
}
return checkBox;
}
});

table.setCellSelectionEnabled(true);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
});
}
}
Если это не так и ячейку с фокусом не нужно выбирать, покажите небольшую демонстрацию


Подробнее здесь: https://stackoverflow.com/questions/788 ... t-selected
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Просмотр коллекции, когда ни одна ячейка не выбрана, должна быть выбрана ячейка индекса 0 [закрыто]
    Anonymous » » в форуме IOS
    0 Ответы
    101 Просмотры
    Последнее сообщение Anonymous
  • Как выбрана лучшая модель потери Yolov8, выбрана классом тренера?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Клетка Формулы не оценивается до тех пор, пока формула не будет сфокусирована и подтверждена в Excel (XLSX)
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Очистка данных из одной JTable также удаляет другую JTable.
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Очистка данных из одной JTable также удаляет другую JTable.
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»