2016-03-28 48 views
0

Bu test kodum var ve düğmeye basıldığında yöntemin bir değer döndürmesini istiyorum. Bunun için en iyi yol ne olurdu?Yuvalanmış sınıftan Java dönüşü

public String test(){ 
    JFrame frame=new JFrame(); 
    frame.setSize(800,600); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 

    JButton button=new JButton("Click Me!"); 
    frame.add(button); 
} 

Bir ActionListener ilave denedi, ama üst yönteminden bir değer iade etmenin bir yolunu.

button.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     //A return here would not work 
    } 
}); 
+0

Genelde formdaki nesneleri güncelleyebilirsiniz. Bir dönüş yerine, doğrudan nesneyi güncellersiniz. Bir "JFrame" yerine – kevingreen

+1

, bir ['JOptionPane'] kullanarak inceleyin (https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html). Sadece bu tür bir görev için tasarlandı. –

cevap

2

yerel değişken final olmak zorunda ama hiçbir şey daha sonra değiştirilmiş edilebilecek bir Collection olmaktan önler.

Aşağıdaki koda bakın.

public String test(){ 
    // code 
    final List<String> list = new ArrayList<>(); 
    button.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      list.add("toBeReturned"); 
     } 
    }); 
    frame.add(button); 
    return list.get(0); 
}