Servus Gemeinde,
meine ComboBox enthält viele Stichworte. Nun möchte ich, dass nach einem Tastendruck (Buchstabe) alle Stichworte,
die diesen Buchstaben enthalten im Model halten und die restlichen rausschmeißen.
Beim nächsten Tastendruck sollen beide Buchstaben in dem Stichwort vorkommen, ansonsten raus damit.
Und so weiter.
Das funktioniert soweit auch.
Ich habe das mit einem DefaultComboBoxModel gelöst. Die Einträge, die nicht mehr dem eingegebenen Wort entsprechen
fliegen raus.
ABER !!
Beim Löschen des letzten Buchstaben (wenn noch einer im Wort vorhanden ist) müsste ich ja auf das vorhergehende
Model zugreifen können.
Das habe ich mit einer ArrayList <DefaultComboBoxModel> probiert.
Aber es funzt nicht.
meine ComboBox enthält viele Stichworte. Nun möchte ich, dass nach einem Tastendruck (Buchstabe) alle Stichworte,
die diesen Buchstaben enthalten im Model halten und die restlichen rausschmeißen.
Beim nächsten Tastendruck sollen beide Buchstaben in dem Stichwort vorkommen, ansonsten raus damit.
Und so weiter.
Das funktioniert soweit auch.
Ich habe das mit einem DefaultComboBoxModel gelöst. Die Einträge, die nicht mehr dem eingegebenen Wort entsprechen
fliegen raus.
ABER !!
Beim Löschen des letzten Buchstaben (wenn noch einer im Wort vorhanden ist) müsste ich ja auf das vorhergehende
Model zugreifen können.
Das habe ich mit einer ArrayList <DefaultComboBoxModel> probiert.
Aber es funzt nicht.
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class HelperClassFrame implements ActionListener ,ListSelectionListener, MouseListener, KeyListener{
ArrayList <DefaultComboBoxModel> modelArray = new ArrayList<DefaultComboBoxModel>();
int arrayCounter = 1;
String input = "";
JFrame frame = new JFrame("Hilfemenu");
DefaultListModel stringModel ;
Vector <Integer> index = new Vector<Integer>(); ;
JList list ;
JFrame main ;
JScrollPane scr_list ;
JButton bt_close = new JButton("zur Hauptansicht");
DefaultComboBoxModel model = new DefaultComboBoxModel();
DefaultComboBoxModel modelTwo = new DefaultComboBoxModel();
String [] combo = new String [5];
JComboBox cb_test = new JComboBox();
JButton bt_help = new JButton("Auswahl öffnen");
JPanel panel = new JPanel();
JPanel panelSouth = new JPanel();
BorderLayout box = new BorderLayout();
SystemData _Sys = (SystemData)CollectionController.getObject("SystemData");
PropertyData _Data = (PropertyData)CollectionController.getObject("PropertyData");
ErrorHelper _Error = (ErrorHelper)CollectionController.getObject("ErrorHelper");
MainFrame _Main = (MainFrame)CollectionController.getObject("MainFrame");
public Container addComponentsToPane(){
model.addElement( " ");
model.addElement( "Motorrad");
model.addElement( "Auto");
model.addElement( "Schiff");
model.addElement( "Lkw");
model.addElement( "Mofa");
model.addElement( "Spider");
model.addElement( "Coupe");
model.addElement( "Cabriolet");
model.addElement( "VW");
model.addElement( "Opel");
model.addElement( "Skoda");
model.addElement( "Fiat");
model.addElement( "Lada");
model.addElement( "Trabant");
model.addElement( "Ford");
model.addElement( "Kia");
model.addElement( "Lexus");
model.addElement( "Hummer");
model.addElement(combo);
cb_test.setModel(model);
cb_test.addKeyListener(this);
stringModel = new DefaultListModel();
for (int i =0 ; i < _Data.getProgramHelp().size() ; i++){
stringModel.addElement(_Data.getProgramHelp().get(i));
index.addElement(_Data.getProgramHelpIndex().get(i));
}
list = new JList(stringModel);
list.addListSelectionListener(this);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addMouseListener(this);
scr_list = new JScrollPane(list);
Container pane = frame.getContentPane();
panel.setLayout(box);
panel.setBorder(new EmptyBorder(20,20,20,20));
panel.setBackground(_Sys.getBackground());
panel.add(cb_test, BorderLayout.NORTH);
panel.add(scr_list, BorderLayout.CENTER);
panelSouth.setLayout(new FlowLayout());
bt_close.setMnemonic('Z');
bt_close.addActionListener(this);
bt_help.addActionListener(this);
panelSouth.add(bt_close);
panelSouth.add(bt_help);
panel.add(panelSouth, BorderLayout.SOUTH);
pane.add(panel);
return pane;
}
public void createAndShowGUI(JFrame Main) {
this.main = Main; frame.setContentPane(addComponentsToPane());
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setSize(400, 600);
frame.setBackground(_Sys.getBackground());
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
....
@Override
public void keyPressed(KeyEvent e) {
modelArray.add(model);
if(e.getKeyCode() > 64 &&
e.getKeyCode() < 91 ){
input = input + e.getKeyChar();
checkModelData(input, modelArray.get(arrayCounter));
arrayCounter++;
}
if(e.getKeyCode() > 96 &&
e.getKeyCode() < 123 ){
input = input + e.getKeyChar();
checkModelData(input, modelArray.get(arrayCounter));
arrayCounter++;
}
if(e.getKeyCode() == 8){
if(input.length()>0){
input = input.substring(0, input.length()-1);
}
else {return;}
if(modelArray.size()>0){
arrayCounter --;
for(int z = arrayCounter; z < modelArray.size(); z++){
modelArray.remove(z);
}
checkModelData(input, modelArray.get(arrayCounter ));
}
else{
checkModelData(input, modelArray.get(0));
}
}
else { return;}
}
public void checkModelData(String input, DefaultComboBoxModel model){
for(int i = 0; i < model.getSize(); i++){
if(model.getElementAt(i).toString().contains(input) ||
model.getElementAt(i).toString().startsWith(input) ||
model.getElementAt(i).toString().endsWith(input)){
modelTwo.addElement(model.getElementAt(i));
}
}
model.removeAllElements();
for(int p = 0; p < modelTwo.getSize(); p++){
model.addElement(modelTwo.getElementAt(p));
}
for(int o = 0; o< model.getSize(); o++){
System.out.println("---"+model.getElementAt(o) + " ---ArrayIndex :" + modelArray.size());
System.out.println("*********************************");
}
cb_test.setModel(model);
modelTwo.removeAllElements();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}