Baiklah, saya punya masalah yang saya tidak tahu apa yang salah. Jadi saya punya jList dan List . Saya memerlukan fungsi yang ketika saya mengklik item (di jList item apa pun) dan itu akan berubah di label saya icon , (Saya berurusan dengan gambar). Entah bagaimana ia berfungsi, ia mengubah ikon label saya menjadi gambar yang saya pilih dari jList, tetapi itu memberi saya Pengecualian dan programnya mogok, biasanya 2 item pertama tidak menyebabkan kesalahan, item ketiga dan selanjutnya menyebabkannya. Setelah crash dan memunculkan banyak teks merah, saya masih dapat mengubah ikon saya.
Ini adalah fungsi di mana saya mendapatkan gambar dan menambahkannya ke Daftar (menambahkan jalur ke gambar tersebut)
private static void getImages(String src) throws IOException {
//Exctract the name of the image from the src attribute
int indexname = src.lastIndexOf("/");
if (indexname == src.length()) {
src = src.substring(1, indexname);
}
indexname = src.lastIndexOf("/");
String name = src.substring(indexname, src.length());
//Open a URL Stream
URL url = new URL(src);
InputStream in = url.openStream();
GPath=fPath+name;
OutputStream out = new BufferedOutputStream(new FileOutputStream( GPath));
//Im adding to the list string (link to image) here
imagesListN.add(GPath);
System.out.println("list size: "+imagesListN.size());
for (int b; (b = in.read()) != -1;) {
out.write(b);
}
out.close();
in.close();
}
Ia menambahkannya secara normal. Ya, saya sedang mengunduhnya, itu sebabnya saya ingin melihatnya setelah diunduh.
Di sinilah saya mengklik fungsi jList.
list.addListSelectionListener(new ListSelectionListener() {
private int a;
@Override
public void valueChanged(ListSelectionEvent arg0) {
if (!arg0.getValueIsAdjusting()) {
String h;
int k;
k = list.getSelectedIndex();
System.out.println("List id: "+k);
a = Main.imagesListN.indexOf(k);
System.out.println("imagesListN id: "+a);
h = Main.imagesListN.get(k);
System.out.println("h : "+h);
ImageIcon img = new ImageIcon(h);
imageReview.setIcon(img);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
Ini jList (daftar nama). Pengecualian ada di
a = Utama.imagesListN.indexOf(k);
itu memberi saya -1 , tetapi h = Main.imagesListN.get(k); memberi saya tautan yang saya perlukan dan memberikannya ke ImageIcon img = new ImageIcon(h); em> dan kemudian imageReview.setIcon(img); . Ikon label berubah setiap kali saya mengklik item yang saya perlukan. Mungkin bukan a = Main.imagesListN.indexOf(k); yang saya lihat, tetapi ada sesuatu yang memberi saya -1. Tapi saya menjalankan semuanya di Thread.
`public class Crawler extends Thread {
Main main = new Main();
public void run(){
try {
main.download();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}`
tidak ada yang mewah di sini. Setiap fungsi ada di kelasnya sendiri, getImages() ada di main , listListener ada di kelas Langas (Kelas tempat semua tombol, label, dll. dibuat tidak ada yang lain) dan Thread well , Thread. Juga berfungsi dengan baik setelah semuanya diunduh, tidak ada pengecualian. Kesalahan muncul selama proses pengunduhan
public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting() == false) { if (list.getSelectedIndex() == -1) { //No selection, disable fire button. fireButton.setEnabled(false); } else { //Selection, enable the fire button. fireButton.setEnabled(true); } } }
- person ibrahim demir   schedule 11.03.2015