Ich kann nicht einen Weg finden, um ein Array zu verwenden (in diesem Fall containerinput []) outide des Ereignis-Listener ist es in.Java- Benutzer Array außerhalb des Ereignis-Listener
Im Fall Zuhörer i erzeugen Textfelder, Eingabefelder und so weiter, und außerhalb davon möchte ich einen Keylistener machen, dass wenn das letzte Eingabefeld ausgewählt ist und ich Tab drücke, will ich, dass etwas passiert.
Alles funktioniert, außer dass ich das Array nennen kann nicht, weil seine außerhalb des Rahmens und ich kann nicht einen Weg, das zu ändern :(Das ist das Ereignis das Array in ist:
JPanel zusatzPanel = new JPanel();
zusatzPanel.setBounds(11, 291, 270, 113);
contentPane2.add(zusatzPanel);
zusatzPanel.setLayout(null);
int[] ZusatzpanelCase = new int [300];
ZusatzpanelCase[1] = 0;
comboBox_projekt.addActionListener (new ActionListener() {
public void actionPerformed(ActionEvent e) {
zusatzPanel.removeAll();
for(int key = 0; key < ObjektlängeForActionListener; key++){
if(comboBox_projekt.getSelectedItem() == null){
zusatzPanel.removeAll();
zusatzPanel.revalidate();
zusatzPanel.repaint();
break;
}else{
if(comboBox_projekt.getSelectedItem().equals(Projektname0JSON[key])){
zusatzPanel.removeAll();
zusatzPanel.revalidate();
zusatzPanel.repaint();
String ZusatzString;
try {
ZusatzString = SimplePingPong.httpRequestZusatz(ProjektPK0JSON[key],"unused","zusatz");
if(ZusatzString.equals("Keine Werte")){
ZusatzpanelCase[1] = 0;
}else{
JSONObject jsonObjectZusatz = new JSONObject(ZusatzString);
int ZusatzJSONlength = jsonObjectZusatz.length();
int xValue = 0;
JTextField[] containerinput = new JTextField[ZusatzJSONlength];
JComboBox[] containerselect = new JComboBox[ZusatzJSONlength];
JLabel[] containerlabel = new JLabel[ZusatzJSONlength];
for(int key1 = 0; key1 < ZusatzJSONlength; key1++){
JSONObject jsonObjectZusatzObjekt0 = jsonObjectZusatz.getJSONObject(String.valueOf(key1));
String ZusatzNameJSON = jsonObjectZusatzObjekt0.getString("name"); // String auslesen!!!
String ZusatzTypJSON = jsonObjectZusatzObjekt0.getString("typ"); // String auslesen!!!
String ZusatzEintragJSON = jsonObjectZusatzObjekt0.getString("eintrag"); // String auslesen!!!
;
if(ZusatzTypJSON.equals("input")){
containerinput[key1] = new JTextField();
containerinput[key1].setBounds(108, xValue, 136, 20);
zusatzPanel.add(containerinput[key1]);
containerinput[key1].setColumns(10);
}
if(ZusatzTypJSON.equals("select")){
containerselect[key1] = new JComboBox();
containerselect[key1].setBounds(108, xValue, 136, 20);
zusatzPanel.add(containerselect[key1]);
}
containerlabel[key1] = new JLabel(ZusatzNameJSON);
containerlabel[key1].setFont(new Font("Tahoma", Font.PLAIN, 15));
containerlabel[key1].setBounds(1, xValue + 1, 100, 15);
zusatzPanel.add(containerlabel[key1]);
ZusatzpanelCase[1] = 1;
ZusatzpanelCase[2] = ZusatzpanelCase[2] + 1;
xValue = xValue + 30;
zusatzPanel.revalidate();
zusatzPanel.repaint();
}
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}
});
und hier i will die Schlüssel Zuhörer machen.
containerinput[ZusatzpanelCase[2]].setFocusTraversalKeysEnabled(false);
containerinput[ZusatzpanelCase[2]].addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_TAB){
String dauervar = input_dauer.getText(); //auslesen von benutzername
String beschreibungvar = textArea_beschreibung.getText(); //auslesen von benutzername
String projektvar = (String)comboBox_projekt.getSelectedItem();
String aktivitvar = (String)comboBox_aktivitaet.getSelectedItem();
String datumvar = input_datum.getText();
SimpleDateFormat df1 = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = df1.parse(datumvar);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
long epoch = date.getTime();
String numberAsStringUnixTImestamp = String.valueOf(epoch/1000);
String [ ] datenarray = {"a","b","c","d","e","f"};
datenarray[0] = numberAsStringUnixTImestamp;
datenarray[1] = dauervar;
datenarray[2] = beschreibungvar;
datenarray[3] = projektvar;
datenarray[4] = aktivitvar;
datenarray[5] = usernamevar;
String JsonArray = "{ \"" + "datum" + "\":\"" + datenarray[0] + "\", \"" + "dauer" + "\":\"" + datenarray[1] + "\", \"" + "beschreibung" + "\":\"" + datenarray[2] + "\", \"" + "projektname" + "\":\"" + datenarray[3] + "\", \"" + "kategorie" + "\":\"" + datenarray[4] + "\", \"" + "username" + "\":\"" + datenarray[5] + "\" }";
System.out.println(JsonArray);
input_datum.setText(reportDate);
if(check_datum.isSelected()){
CustomDateFinal[0] = datumvar;
input_datum.setText(CustomDateFinal[0]);
}
input_dauer.setText(USERDefTimeJSON);
textArea_beschreibung.setText("");
comboBox_projekt.requestFocus();
try {
SimplePingPong.httpRequestVoid(JsonArray,"unused","werte");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
Wie kann ich meine containerinput machen [] sichtbar außerhalb oder ist es eine Abhilfe
Dank im Voraus :)
Wo möchten Sie auf containerinput [] 'zugreifen? Liegt es außerhalb der 'Klasse'? oder innerhalb der Klasse, aber außerhalb der Methode in derselben Klasse? –
Sie befindet sich außerhalb des Ereignishandlers in derselben Klasse. –