Два jtables, которые каждый избирает выбор другого - для выбора в каждой таблице требуется 2 щелчка?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Два jtables, которые каждый избирает выбор другого - для выбора в каждой таблице требуется 2 щелчка?

Сообщение Anonymous »

Я пытаюсь иметь два jtables, где, если вы выберете ячейку в одном, она автоматически очищает выбор в другом. Я получил четкую часть выбора, проблема, с которой у меня есть, в том, что теперь требуется два щелчка, чтобы сделать выбор в каждой таблице (после самого первого выбора). Один щелчок только подчеркивает (я думаю, фокусируется?) Таблица и ячейка. Кто -нибудь знает, что делает это, и как это исправить? Спасибо !! < /p>
код: < /p>
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;

class JTableSelectionTest extends JFrame {

private JTable table1;
private JTable table2;
private JScrollPane scrollPane1;
private JScrollPane scrollPane2;
private String[] col1 = {"A", "B", "C"};
private String[] col2 = {"D", "E", "F"};
private String[] row1 = {"1", "1", "1"};
private String[] row2 = {"2", "2", "2"};
private String[] row3 = {"3", "3", "3"};

public JTableSelectionTest() {

setTitle("JTableSelectionTest");
setSize(700,250);
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);

table1 = new JTable(model(col1));
table1.setRowHeight(50);
table1.setCellSelectionEnabled(true);
table1.getTableHeader().setReorderingAllowed(false);
table1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table1.getSelectionModel().addListSelectionListener(table1Listener());
((DefaultTableModel)table1.getModel()).addRow(row1);
((DefaultTableModel)table1.getModel()).addRow(row2);
((DefaultTableModel)table1.getModel()).addRow(row3);

table2 = new JTable(model(col2));
table2.setRowHeight(50);
table2.setCellSelectionEnabled(true);
table2.getTableHeader().setReorderingAllowed(false);
table2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table2.getSelectionModel().addListSelectionListener(table2Listener());
((DefaultTableModel)table2.getModel()).addRow(row1);
((DefaultTableModel)table2.getModel()).addRow(row2);
((DefaultTableModel)table2.getModel()).addRow(row3);

scrollPane1 = new JScrollPane(table1);
scrollPane2 = new JScrollPane(table2);
scrollPane1.setPreferredSize(new Dimension(300, 170));
scrollPane2.setPreferredSize(new Dimension(300, 170));

add(scrollPane1);
add(scrollPane2);
}

public DefaultTableModel model(String[] columns) {
return
new DefaultTableModel(new Object[][]{}, columns) {
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
@Override
public Class getColumnClass(int columnIndex) {
return String.class;
}
};
}

public ListSelectionListener table1Listener() {

ListSelectionListener listener =
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {

table2.clearSelection();
}
};

return listener;
}

public ListSelectionListener table2Listener() {

ListSelectionListener listener =
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {

table1.clearSelection();
}
};

return listener;
}

public static void main(String args[]) {

JTableSelectionTest test = new JTableSelectionTest();
test.setLocationRelativeTo(null);
test.setVisible(true);
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... red-to-sel
Ответить

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

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

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

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

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