Мое приложение обрабатывает записи пациентов.В основном кадре пользователь может открыть несколько внутренних кадров.Каждый внутренний фрейм содержит панель с вкладками, а каждая созданная пользователем вкладка содержит форму, в которую он может вводить данные пациента, и таблицу, в которой отображаются все добавленные пациенты.
Когда пользователь щелкает строку (пациента) вjtable поля формы заполняются данными пациента, и когда он нажимает «Escape», поля формы очищаются, и пользователь может перейти к поиску / проверке / вводу другого пациента.
Моя проблема в том, что это событие escape-ключа, создает исключение classCastException в Веществе, которое я чувствую , которое я использую.Код, который я написал для выполненного действия, работает нормально.Эта проблема появилась, так как я начал использовать панели с вкладками (до того, как все было сделано в одной панели).Если я изменю внешний вид, например, на Windows, исключение не выдается.У вас есть идеи?
Вот пример кода:
private void db_existKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(evt.getKeyCode()==KeyEvent.VK_ESCAPE)
{
searchField.requestFocusInWindow(); // if user doesn't want to process any of the entries shown to the table
if(searchField.getText().length()>=1) // focus goes to search field and data pane fields are cleared form previous shows
{
dataPane.setPid(-1);
dataPane.getPersonalDataPane().clearAll();
treat_diagPane.getDiagnosis_pane().clearAll();
treat_diagPane.getTreat_pane().clearAll();
}
DefaultTableModel model=new DefaultTableModel(
new Object [][] {
},
new String [] {
bundle.getString("lname"), bundle.getString("fname"), bundle.getString("date_birth"), bundle.getString("occupation")
});
db_exist.setModel(model);
}
Это исключение:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JTabbedPane cannot be cast to javax.swing.JDesktopPane
at javax.swing.plaf.basic.BasicDesktopPaneUI$Actions.actionPerformed(BasicDesktopPaneUI.java:329)
at org.jvnet.lafwidget.tabbed.TabPagerWidget$4.actionPerformed(TabPagerWidget.java:158)
, и это код, который вызываетисключение:
public void actionPerformed(ActionEvent e) {
JDesktopPane dp = (JDesktopPane)e.getSource();
String key = getName();
if (CLOSE == key || MAXIMIZE == key || MINIMIZE == key ||
RESTORE == key) {
setState(dp, key);
}
else if (ESCAPE == key) {
if (sourceFrame == dp.getSelectedFrame() &&
focusOwner != null) {
focusOwner.requestFocus();
}
moving = false;
resizing = false;
sourceFrame = null;
focusOwner = null;
}