Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
450
Tıklama
0
Öne Çıkarma
Java String sorunu
K
13 yıl (217 mesaj)
Teğmen
Konu Sahibi

Merhaba ben javada böyle bir kod yazıp string belirledim sonrada butona bastığımda stringin değişmesi lazım ama değişmiyor neden olabilir?


package jframe;


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class frame extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;

static String a = "iyi";



public static void main(String[] args){
new frame().setVisible(true);
}


public frame(){

setSize(300,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton(a);
add(button);
button.addActionListener(this);
setLayout(new FlowLayout());
}


public void actionPerformed(ActionEvent e){
a = "kötü";


}

}



M
13 yıl (5771 mesaj)
Yarbay

Java dilinde String immutable'dir.
Yani siz, butona basinca a degerinin pointerini degistirdiniz.
Button hala ilk tanimladiginiz degiskeni gormekte.
Bu sebeple kodunu su sekilde degistirebilirsin:
 
public void actionPerformed(ActionEvent e){
a = "kötü";
button.setText(a);

}


Bu mesaja 1 cevap geldi.
K
13 yıl (217 mesaj)
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: Mephalay

Java dilinde String immutable'dir.
Yani siz, butona basinca a degerinin pointerini degistirdiniz.
Button hala ilk tanimladiginiz degiskeni gormekte.
Bu sebeple kodunu su sekilde degistirebilirsin:
 
public void actionPerformed(ActionEvent e){
a = "kötü";
button.setText(a);

}



Ama malasefki public void actionPerformed bölümü public frame() bölümündeki kodları okumuyor ben orda button adında bir JButoon oluşturdum ama malesefki actionPerformed bölümü bunları göremiyor mesela ben orda bir string oluştursam aşağısı okumuyor buyüzden ortak bir string oluşturdum bu nedenlede kod çalışmadı buttonu bulamıyor


Bu mesaja 1 cevap geldi.
M
13 yıl (5771 mesaj)
Yarbay

Asagidaki kodu kopyala - yapistir.

 

package jframe;


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class frame extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;

static String a = "iyi";
JButton button = null;


public static void main(String[] args){
new frame().setVisible(true);
}


public frame(){

setSize(300,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton(a);
add(button);
button.addActionListener(this);
setLayout(new FlowLayout());
}


public void actionPerformed(ActionEvent e){
button.setText("kötü");


}

}


Button objesini frame class'inin degiskenleri seviyesine cekmek gerekiyor birden fazla metodun uzerinde degisiklik yapmasi icin. Bu arada class isimlerini buyuk harf yazmak daha dogru. Kolay gelsin.




Bu mesajda bahsedilenler: @karaşimsek
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.