2016-09-08 6 views
1

konnte ich etwa 11 JButtons in einem Kreis schaffen mit diesem Code ......Deaktivieren JButton nach dem ersten Klicken

public class Beginner extends JPanel { 
     private JButton quest; 
     public Beginner() { 

        int n = 10; //no of JButtons 
        int radius = 200; 
        Point center = new Point (250, 250); 

        double angle = Math.toRadians(360/n); 

        List <Point> points = new ArrayList<Point>(); 

        points.add(center); 

        for (int i = 0; i < n; i++) { 
         double theta = i * angle; 

         int dx = (int) (radius * Math.sin(theta)); 

         int dy = (int) (radius * Math.cos(theta)); 

         Point p = new Point (center.x + dx , center.y + dy); 
         points.add(p); 
        } 

        draw (points);      
        } 
        public void draw (List<Point> points) { 

         JPanel panels = new JPanel(); 

         SpringLayout spring = new SpringLayout(); 
         int count = 1; 
         for (Point point: points) { 

          quest = new JButton("Question " + count); //JButton is drawn about 10 times in a circle arragement 
          quest.setForeground(Color.BLUE); 
          Font fonte = new Font("Script MT Bold", Font.PLAIN, 20); 
          quest.setFont(fonte); 
          add (quest); 
          count++; 
          ; 
          spring.putConstraint(SpringLayout.WEST, quest, point.x, SpringLayout.WEST, panels); 

          spring.putConstraint(SpringLayout.NORTH, quest, point.y, SpringLayout.NORTH, panels); 

          setLayout(spring); 

          panels.setOpaque(false); 
          panels.setVisible(true); 
          panels.setLocation(10, 10); 

          add(panels); 
} 
} 
} 

Nun, ich habe eine Action für jeden JButton zu schaffen, und es ist So sollte jeder Button nur für einen Klick aktiv sein, danach ändert er seine Farbe auf grün !, ich habe keine Ahnung wie das geht! Danke für Ihre Hilfe!

+1

Mögliche Duplikate von [Deaktivieren Schaltfläche auf klicken vor actionPerformed ist konkurrierendes Java] (http://stackoverflow.com/questions/17807846/disable-button-on-clic-befor-actionperformed-is-competet-java) –

Antwort

1

Sie sollten einen Hörer für alle Schaltflächen hinzufügen:

Methode 1:

quest.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        JButton source = (JButton) e.getSource(); 
        source.setEnabled(false); 
        source.setBackground(Color.GREEN); 
      } 
    }); 

Methode 2:

quest.addActionListener(new DisableButtonActionListener()); 

      ... 

    private class DisableButtonActionListener implements ActionListener { 
       @Override 
       public void actionPerformed(ActionEvent e) { 
         JButton source = (JButton) e.getSource(); 
         source.setEnabled(false); 
         source.setBackground(Color.GREEN); 
       } 
    } 

METHODE 3 (meine persönliche Wahl):

Beginner implements ActionListener { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
        JButton source = (JButton) e.getSource(); 
        source.setEnabled(false); 
        source.setBackground(Color.GREEN); 
      } 

      ... 

      quest.addActionListener(this); 

} 
+0

Vielen Dank! Ich bin dankbar!! –

+0

Der erste hat sehr gut funktioniert, aber ich werde immer noch den zweiten im Blick behalten, habe es nicht versucht, tho! .... Aber danke nochmal! –

+0

Diese 3 machen das gleiche, sie sind nur anders geschrieben. – Damiano

1

In der Aktion Zuhörer Taste zu tun versuchen:

button.setEnabled(false); 

Es sollte funktionieren.

+0

Nein! ... Das würde es verallgemeinern und die letzte Schaltfläche deaktivieren ....... nicht die ausgewählte Schaltfläche !! –

Verwandte Themen