2016-07-02 10 views
0

Ok so im arbeiten an einem Spiel und jetzt habe ich ein Bild und ich versuche, Schaltflächen unter dem Bild an bestimmten Orten zu platzieren, wenn der Benutzer den Teil des Bildschirms klickt das Bild ändert. Ich habe Probleme, herauszufinden, wie ich mein Programm für den Action-Listener formatiere.Aktion Listener Java-Probleme

public class TestJFrame{ 
    private static JFrame frame = new JFrame(); 
    private static JLabel label = new JLabel(); 
    private static JButton buttons[] = new JButton[4]; 

    private static int[][] location = new int[3][4]; 


    public static void main(String args[]){ 
     frame.getInsets().set(20, 5, 5, 5); 

     frame.setLayout(null); 
     frame.setPreferredSize(new Dimension(507, 528)); 
     frame.pack(); 
     frame.setResizable(false); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setTitle("Test"); 

     buttons[0] = new JButton("jbZero"); 
     buttons[1] = new JButton("jbOne"); 
     buttons[2] = new JButton("jbTwo"); 
     buttons[3] = new JButton("jbThree"); 

     frame.add(buttons[0]); 
     frame.add(buttons[1]); 
     frame.add(buttons[2]); 
     frame.add(buttons[3]); 

     setButtons(); 
     frame.setVisible(true); 

     buttons[0].setLocation(100, 100); 
    } 


    private static void setButtons(){ 
     for (int i=0;i<=3;i++){ 
      buttons[i].setSize(10, 10); 
      buttons[i].setLocation(0, 0); 
      buttons[i].setVisible(true); 
     } 
    } 

    public void intializeListener(){ 
     buttons[0].addActionListener((ActionListener) this);   
    } 

    public void buttonsZeroActionPreformed(java.awt.event.ActionEvent e){ 
     System.out.println("button zero works"); 
    } 
} 

So jede Hilfe würde sehr geschätzt werden.

+0

Java GUIs hat auf verschiedenen OS‘, Bildschirmgröße, Bildschirm arbeiten Auflösung usw. unter Verwendung verschiedener PLAFs in verschiedenen Lokalitäten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). –

Antwort

1

Hängt was Sie in den Hörer implementieren möchten:

  1. Wenn sie die gleiche Aktion tun implementieren Sie den Hörer innerhalb setButtons Funktion:

    private static void setButtons(){ 
        for (int i=0;i<=3;i++){ 
         buttons[i].setSize(10, 10); 
         buttons[i].setLocation(0, 0); 
         buttons[i].setVisible(true); 
    
         buttons[i].addActionListener(new ActionListener() { 
          @Override 
          public void actionPerformed(ActionEvent e) { 
           // listener implement btn 0 
          } 
         }); 
        } 
    } 
    
  2. Wenn jede Taste einzigartige Implementierung benötigen Ich denke, dass bessere Implementierung wird in einer neuen Funktion sein setBtnListeners und rufen Sie von Ihrem Haupt nach der Verwendung setButtons();:

    private static void setBtnListeners() { 
        buttons[0].addActionListener(new ActionListener() { 
         @Override 
         public void actionPerformed(ActionEvent e) { 
           // listener implement btn 0 
         } 
        }); 
    } 
    

Update: Leider ich gerade bemerkt, dass Sie vier Tasten haben ... Sie können einfach einen anderen hinzufügen :)