我想用setText()方法更新jlabel和jtextfield,但是它不起作用。但是,其余代码仍在工作。代码如下;
btnDosyaSe.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser jfc = new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int kullaniciSecimi = jfc.showOpenDialog(null); if (kullaniciSecimi == JFileChooser.APPROVE_OPTION) { File fileName = jfc.getSelectedFile(); textField.setText(fileName.getPath()); islemSureci.setText("Veriler Okunuyor..."); try { ArrayList<ArrayList<String>> tumYazılar = rwd.readTXT(fileName.getPath()); String[] yazarlar = rwd.yazarlar(fileName.getPath()); islemSureci.setText("Veriler Okundu! Öznitelik çıkarımına başlandı..."); oznitelikler = oc.oznitelikleriBul(tumYazılar, yazarlar); islemSureci.setText("Öznitelikler Çıkarılmıştır!"); //String text = readTXT(fileName); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } });
在这里,islemSureci是JLabel,而textFiled是JTextField。设置它们后,它不起作用。代码中的所有工作完成后,它们就会出现。请问原因是什么?
我认为您的意思是 “所有工作完成之后” 是从文件(您注释的行)中加载文本。我认为这段代码可以正常工作,因为设置文本后您什么也不做。您可以使用其他线程加载文本(如果为true)。
如果 oc.oznitelikleriBul() 需要很长时间,则可以在不同的线程中对该行和文本设置行进行编码。但是,在这种情况下,请确保在新线程内的EDT中运行文本设置行。