2011-11-18 3 views
6

का चयन कैसे करें यह वास्तव में सैद्धांतिक प्रश्न होगा, बस मेरे साथ थोड़ा सा सहन करें। मुझे अपने जेबटन के साथ कुछ करने की ज़रूरत है, और मुझे नहीं पता कि कहां से शुरू करना है।वास्तव में जेबटन

तो मैं क्या जरूरत है एक JButton पर क्लिक करने के लिए, और एक दृश्य सबूत है कि यह चयन नहीं होता, उदाहरण के लिए एक लाल बॉर्डर या सफेद पृष्ठभूमि या कुछ और सक्षम होने के लिए है। और मैं इसे तब तक रहना चाहता हूं जब तक कि एक और जेबटन उसी तरह से नहीं चुना जाता। अभी, जब मैं एक जब्बटन पर क्लिक करता हूं तो एक छोटा दृश्य डिस्प्ले होता है जिसे क्लिक किया गया था, लेकिन मैं इसे लंबे समय तक नहीं बना सकता।

मैं ChangeListeners साथ एक सा खेलने के लिए कोशिश की, लेकिन कोई परिणाम नहीं।

तो मेरे सवाल का मूल रूप से है: दृष्टिकोण की किस तरह तुम मुझे सलाह देंगे कोशिश करने के लिए?

1 - वापस ChangeListener करने के लिए जाना है, यह ही एकमात्र विकल्प है 2 - JButton कि वास्तव में अगर यह बहुत अस्पष्ट है करता है कि

क्षमा एक और विकल्प है, लेकिन सब कुछ मैंने पाया सुपर विशिष्ट था, और जवाब नहीं दिया मेरे सवाल।

उत्तर

10

आश्चर्य मैं तुम्हें एक JToggleButton उपयोग करना चाहते हैं, शायद एक तो यह है कि केवल एक बटन एक समय में चयन किया जाता है एक ButtonGroup को जोड़ा गया।

संपादित उदाहरण के लिए
:

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

import javax.swing.*; 

public class ToggleArray extends JPanel { 
    private static final int SIDE = 5; 

    public ToggleArray() { 
     ActionListener listener = new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("Button selected: " + e.getActionCommand()); 
     } 
     }; 

     setLayout(new GridLayout(SIDE, SIDE)); 
     ButtonGroup btnGroup = new ButtonGroup(); 
     for (int i = 0; i < SIDE * SIDE; i++) { 
     String text = String.format("[%d, %d]", i % SIDE, i/SIDE); 
     JToggleButton btn = new JToggleButton(text); 
     btn.addActionListener(listener); 
     btnGroup.add(btn); 
     add(btn); 
     } 
    } 

    private static void createAndShowGui() { 
     ToggleArray mainPanel = new ToggleArray(); 

     JFrame frame = new JFrame("ToggleArray"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 
} 

कैसा दिखेगा जो:
enter image description here

+0

+1, अच्छा सुझाव । – mre

+0

+1 नहीं के बारे में JToggleButton लेकिन के बारे में ButtonGroup http://tips4java.wordpress.com/2008/11/09/select-button-group/ – mKorbel

+0

ओह, हाँ, हो सकता है मैं वास्तव में क्या जरूरत है, धन्यवाद :) –

0

आप पृष्ठभूमि रंग बदलने की कोशिश कर सकते:

boolean jButton1clicked = false; 

jButton1.addActionListener(new ActionListener(){ 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     jButton1selected = !jButton1selected; 
    } 
); 

jButton1.setBackgroundColor(jButton1clicked ? Color.green : Color.red); 
+1

इसका कुछ दृश्य और कार्यान्वयन पर कोई प्रभाव नहीं पड़ता है। – trashgod