Ich habe das Problem, dass mir der Compiler mitteilt: "Cannot refer to a non-final variable pattern_textfield inside an inner class defined in a different method". Ich verstehe schon was gemeint ist. Aber wie kann ich den folgenden Code anders implementieren?
Ich will ein Swing Fenster (JFrame) erstellen, in das ich mein JTextField samt JButton packe und den Button zum Suchen eines bestimmten Strings verwenden, der wiederum aus dem JTextfield herausgelesen wird. Und da hab ich die Zwickmühle: Ich will alle Komponenten grafisch anordnen und dazu gehört eben auch das JTextfield, das aber innerhalb der ActionListener-Klasse dann nicht mehr zu "sehen" ist.
Code:
void doSearch(String zu_durchsuchender_text) {
JFrame suchmaske = new JFrame("Search for String");
JPanel panel = new JPanel();
suchmaske.setBounds(10,10,400,180);
Container c = suchmaske.getContentPane();
JTextField pattern_textfield = new JTextField(15);
JButton search_button = new JButton("Start Search");
search_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String source = new String(zu_durchsuchender_text);
Pattern pattern;
Matcher matcher;
boolean gefunden = false;
StringBuffer ergebnis = new StringBuffer(0);
pattern = Pattern.compile(pattern_textfield.getText());
matcher = pattern.matcher(source);
while (matcher.find()) {
ergebnis.append(matcher.start() + "-" + matcher.end() + ";\n");
gefunden = true;
}
}
});
}
Ich will ein Swing Fenster (JFrame) erstellen, in das ich mein JTextField samt JButton packe und den Button zum Suchen eines bestimmten Strings verwenden, der wiederum aus dem JTextfield herausgelesen wird. Und da hab ich die Zwickmühle: Ich will alle Komponenten grafisch anordnen und dazu gehört eben auch das JTextfield, das aber innerhalb der ActionListener-Klasse dann nicht mehr zu "sehen" ist.