Рейтинг:
37
Shubhashish_Mandal
Вы можете использовать табличную модель.
Подобный этому
public class MyModel extends AbstractTableModel{
}
Затем установите модель в свой JTable.
JTable myTable = new JTable();
myTable.setModel(new MyModel());
vishal.v.patil
но это приведет к потере моих данных..
мне нужны мои данные также из ячеек...,,
Shubhashish_Mandal
Я использовал его во многих приложениях, и он прекрасно работает для меня.
Как именно будут потеряны ваши данные, я понять не могу. Опубликуйте свой код, если это возможно.
vishal.v.patil
если у нас уже есть мои данные в таблице, то после того, как я применю tablemodel во время выполнения, может ли он работать нормально!!??
может быть, он потерял данные или нет??
Shubhashish_Mandal
вы должны добавить данные через модель в свою таблицу.
vishal.v.patil
но я хочу заполнить данные от пользователя, и после этого я хочу отключить редактирование из таблицы по событию нажатия кнопки!!
Рейтинг:
26
Shubhashish_Mandal
Его работа, как вы хотите. После нажатия кнопки отключить редактирование ячеек прекратится.
public class TestTable {
boolean flag = false;
public void create() {
JTable table = new JTable(2, 2) {
public boolean isCellEditable(int row, int column) {
if (flag) {
return false;
}
return true;
}
};
JFrame f = new JFrame();
JButton button = new JButton("Disable");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = true;
}
});
f.setLayout(new FlowLayout());
f.add(new JScrollPane(table));
f.add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TestTable().create();
}
});
}
vishal.v.patil
импорт java.awt.*;
импорт java.awt.event.*;
импорт java.util.Календарь;
импорт Java.текст.Класса simpledateformat;
импорт javax.swing.*;
импорт javax.swing.event.PopupMenuListener;
импорт javax.swing.event.PopupMenuEvent;
импорт пакета javax.качели.plafбыл.ComboBoxUI;
импорт пакета javax.качели.plafбыл.основные.ComboPopup;
импорт javax.swing.plaf.metal.MetalComboBoxUI;
импорт пакета javax.качели.границы.Границы;
импорт javax.swing.border.EtchedBorder;
импорт javax.swing.border.EmptyBorder;
импортировать com.солнце.Ява.качели.plafбыл.мотив.MotifComboBoxUI;
импорт com.sun.java.swing.plaf.windows.WindowsComboBoxUI;
тестовая таблица открытого класса {
флаг = ложь;
общественного недействительными создать() {
окончательный jtable, выполните следующие действия таблица = новый jtable, выполните следующие действия(2, 2) {
public boolean isCellEditable(int строка, int столбец) {
если (флаг) {
возвращать false;
}
вернуть true;
}
};
JFrame f = новый JFrame();
Кнопка JButton = новая кнопка JButton("отключить");
button.addActionListener(новый ActionListener() {
общественного недействительными событий actionperformed(типа actionevent е) {
флаг = true;
}
});
JButton button1 = новый JButton("показать");
button1.addActionListener(новый ActionListener() {
общественного недействительными событий actionperformed(типа actionevent е) {
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
Системы.из.код println("значение по ТБ("+я+","+Дж+")"+стол.getModel().getValueAt(I и J));
}
});
f.setLayout(новый FlowLayout());
f.добавить(новый JScrollPane(таблица));
f.добавить(кнопка); f.добавить(кнопка 1);
Ф.setDefaultCloseOperation(форму.EXIT_ON_CLOSE);
Ф.функцию setvisible(истина);
}
публичный статический пустота главный(строка[] аргументы) {
SwingUtilities.invokeLater(новый запускаемый() {
общественного недействительными Run() {
новая тестовая таблица().create();
}
});
}
}
Теперь смотрите на проблему...!!
Shubhashish_Mandal
в чем же проблема ?
vishal.v.patil
когда мы фокусируемся на конкретной ячейке, это значение не печатается!!
вот в чем проблема....
vishal.v.patil
если я хочу, чтобы эти только одна кнопка она не работает..!
Как я это делаю..