2013-07-29 2 views
1

Я попытался сделать кнопку, которая меняет текст другой кнопки, но settext не работает.JButton, setText не работает?

Это appdroid.java:

пакет appdroid;

public class appdroid{ 

    static int a = 640; 
    static int b = 400; 
    static int c = 100; 
    static int d = 100; 

    public static void main(String[] args) { 
     new gui(); 
    } 
} 

это gui.java:

package appdroid; 
import javax.swing.AbstractButton; 
import javax.swing.JFrame; 
import javax.swing.JButton; 

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

public class gui extends JFrame implements ActionListener { 

    String[] a = {"Search device","Device not found","Error, bad device","Device found"}; 
    String[] b = {"Device not found","Error, bad device","Compile"}; 
    String[] c = {"Device not found","Error, bad device","Unpack"}; 
    String d = a[0]; 
    String f = b[0]; 
    String g = c[0]; 
    private JButton b1; 
    private JButton b2; 
    private JButton b3; 

    public gui(){ 

     super("APPDROID"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
     setSize(appdroid.a,appdroid.b); 
     setLocation(appdroid.c,appdroid.d); 
     setLayout(new FlowLayout()); 

     JButton b1 = new JButton(d); 
     JButton b2 = new JButton(f); 
     JButton b3 = new JButton(g); 

     b1.addActionListener(this); 
     b2.addActionListener(this); 
     b3.addActionListener(this); 

     add (b1); 
     add (b2); 
     add (b3); 
    } 

    public void actionPerformed(ActionEvent e) { 
     Object source = e.getSource(); 

     if(source == b1){ 
      d = a[3]; 
      f = b[2]; 
      b1.setText(d); 
      b2.setText(f); 
     } 

     if(source == b2){ 
      g = c[2]; 
      b3.setText(g); 
     } 

     if(source == b3 && g == c[2]){ 
      ; 
     } 
    } 
} 

я добавил событие действий на кнопки, и т.д., как вы можете видеть, но это не работает.

+0

Небольшой совет: 'Имена классов должны быть существительными, в смешанном случае с первой буквы каждого внутреннего слова capitalized.' HTTP : //www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#15411 – tostao

+0

такой код никогда не должен существовать ... – DaHoopster

ответ

5

Вы создали 3 локальных переменных в gui() конструктора

JButton b1 = new JButton(d); 
    JButton b2 = new JButton(f); 
    JButton b3 = new JButton(g); 

Я думаю, что вы хотите, чтобы инициализировать поля?

b1 = new JButton(d); 
    b2 = new JButton(f); 
    b3 = new JButton(g); 

, так как вы сравниваете source с полями b1, b2 .. в actionPerformed(ActionEvent e) {

+0

Теперь он работает. благодаря – user2622574