У меня проблема с настройкой текста поля в классе1 на другое поле в классе2. В принципе, у меня есть два класса. В классе1 у меня есть метод, который позволяет пользователю искать слово, которое находится в файле (чтение из файла), а затем, когда слово найдено, я хочу установить его в поле2 класса «1».Как установитьText из класса1 в класс2?
Например, если я ищу «Сан», искомое слово в классе2 должно показать «Сан», а второе слово должно показать «Ая».
Я не знаю, где iam идет не так, и программа не показывает никаких ошибок. Любая помощь будет оценена. Заранее спасибо.
file.txt
San Aya
public class MyFileReader {
JTextField searchfield = new JTextField(10);
JPanel panel = new JPanel();
public MyFileReader() {
panel.add(new JLabel("Search:"));
panel.add(searchfield);
panel.setLayout(new GridLayout(5, 2));
int result = JOptionPane.showConfirmDialog(null, panel,
"Search", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION) {
MyContentManager contentManager = new MyContentManager();
try {
String stringSearch = searchfield.getText();
BufferedReader bf = new BufferedReader(new FileReader("file.txt"));
int linecount = 0;
String line;
ArrayList<String> list = new ArrayList<String>();
while ((line = bf.readLine()) != null) {
list.add(line);
linecount++;
int indexfound = line.indexOf(stringSearch);
if (indexfound > -1) {
String[] word = line.split("\t");
String firstword = word[0];
String secondword = word[1];
contentManager.field1.setText(stringSearch);//This is the problem
contentManager.field2.setText(secondword);//This is the problem
}
}
bf.close();
} catch (IOException e) {
System.out.println("IO Error Occurred: " + e.toString());
}
}
}
public static void main(String[] args) {
new MyFileReader();
}
}
class2
public class MyContentManager {
JTextField field1 = new JTextField(10);
JTextField field2 = new JTextField(10);
JPanel panel = new JPanel();
public MyContentManager() {
panel.add(new JLabel("Searched For:"));
panel.add(field1);
panel.add(new JLabel("Second word:"));
panel.add(field2);
panel.setLayout(new GridLayout(5, 2));
int result = JOptionPane.showConfirmDialog(null, panel,
"Search found", JOptionPane.YES_NO_OPTION);
}
}
Ваши классы нуждаются в методах getter и setter, аналогичных любым классам без Swing. Конструктор класса 2 не должен иметь JOptionPane - мало смысла, поскольку он не создан событием. –
Как применять методы getter и setter? – Ramal
Другая проблема заключается в том, что я не вижу, где вы показываете класс2 в любом месте. Если класс не отображается, имеет смысл, что вы никогда не увидите результаты поиска. –