Ich habe eine Tabelle, wenn ich dort auf eine Zeile klicke soll man in einem OptionPane einige Werte ändern können. Das hat bisher auch funktioniert, jetzt nach einiger Zeit habe ich wieder angefangen am Programm zu arbeiten und nun treten da irgendwie Probleme auf. (in dem Bereich habe ich nichts geändert)
Klicke ich auf die Zeile öffnet sich das "PopUp" wie im oberen Teil vom Dateianhang, bewege ich jetzt die Maus über die "DropDown" Felder wird das Layout zerstört wie im unteren Teil vom Dateianhang zu sehen, auch vom Hauptprogramm wenn ich das OptionPane schließe wird das Layout durch "Fragmente" vom Popup überlagert überall da wo ich die Maus hin bewege.
So wie hier hat es mal funktioniert (Start bei 2:36)
Was ist da jetzt falsch gelaufen ?
Klicke ich auf die Zeile öffnet sich das "PopUp" wie im oberen Teil vom Dateianhang, bewege ich jetzt die Maus über die "DropDown" Felder wird das Layout zerstört wie im unteren Teil vom Dateianhang zu sehen, auch vom Hauptprogramm wenn ich das OptionPane schließe wird das Layout durch "Fragmente" vom Popup überlagert überall da wo ich die Maus hin bewege.
So wie hier hat es mal funktioniert (Start bei 2:36)
Was ist da jetzt falsch gelaufen ?
Java:
public static void editClickedChannel() {
ListSelectionModel lsm = ChannelTools.generatedChannels.getSelectionModel();
if (!lsm.isSelectionEmpty()) {
int row = lsm.getMinSelectionIndex();
JPanel myPanel = new JPanel();
//myPanel.setLayout(new FlowLayout());
JComboBox<String> editTxContact = new JComboBox<String>();
JComboBox<String> editRxGroup = new JComboBox<String>();
JComboBox<String> editScanList = new JComboBox<String>();
JComboBox<String> editPwr = new JComboBox<String>();
// TS1
if(ChannelTools.model2.getValueAt(row, 11).equals("s1")){
for(int i = 0; i < ChannelTools.comboBoxTxContactTS1.getItemCount(); i++){
editTxContact.addItem(ChannelTools.comboBoxTxContactTS1.getItemAt(i));
if(ChannelTools.comboBoxTxContactTS1.getItemAt(i).equals(ChannelTools.model2.getValueAt(row, 3))) editTxContact.setSelectedIndex(i);
}
for(int i = 0; i < ChannelTools.comboBoxRxGroupTS1.getItemCount(); i++){
editRxGroup.addItem(ChannelTools.comboBoxRxGroupTS1.getItemAt(i));
if(ChannelTools.comboBoxRxGroupTS1.getItemAt(i).equals(ChannelTools.model2.getValueAt(row, 4))) editRxGroup.setSelectedIndex(i);
}
for(int i = 0; i < ChannelTools.comboBoxScanListTS1.getItemCount(); i++){
editScanList.addItem(ChannelTools.comboBoxScanListTS1.getItemAt(i));
if(ChannelTools.comboBoxScanListTS1.getItemAt(i).equals(ChannelTools.model2.getValueAt(row, 5))) editScanList.setSelectedIndex(i);
}
myPanel.add(new JLabel("TX Contact:"));
myPanel.add(editTxContact);
myPanel.add(new JLabel("RX Group:"));
myPanel.add(editRxGroup);
myPanel.add(new JLabel("ScanList:"));
myPanel.add(editScanList);
}
// TS2
// Code ist wie TS1 und für die Übersichlichkeit entfernt
// FM
if(ChannelTools.model2.getValueAt(row, 1).equals("a")){
for(int i = 0; i < ChannelTools.comboBoxScanListFM.getItemCount(); i++){
editScanList.addItem(ChannelTools.comboBoxScanListFM.getItemAt(i));
if(ChannelTools.comboBoxScanListFM.getItemAt(i).equals(ChannelTools.model2.getValueAt(row, 5))) editScanList.setSelectedIndex(i);
}
myPanel.add(new JLabel("ScanList:"));
myPanel.add(editScanList);
}
myPanel.add(new JLabel("Power:"));
editPwr.addItem("High");
editPwr.addItem("Low");
if(ChannelTools.model2.getValueAt(row, 27).equals("l")) editPwr.setSelectedIndex(1);
myPanel.add(editPwr);
int result = JOptionPane.showConfirmDialog(null, myPanel, "Edit Channel: " + ChannelTools.model2.getValueAt(row, 2), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
// ab hier ist es unrelevant
if (result == JOptionPane.OK_OPTION) {
....
}
}
}
Anhänge
Zuletzt bearbeitet: