2010-12-09 3 views
0

Ich bin ziemlich neu in der GUI. Ich versuche es so zu machen, dass abhängig davon, welcher Radio Button ausgewählt ist, ein JLabel seinen Wert ändert. Wenn beispielsweise "id" ausgewählt ist, wird "http://steamcommunity.com/id/" angezeigt und wenn "profile" ausgewählt ist, wird "http://steamcommunity.com/profiles/" angezeigt. . Ich habe einige Code und läuft und es ist fast vollständig:Wie man Radiobuttons dynamisch Text in Java ändern kann

package sgt; 

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 

import javax.swing.BorderFactory; 
import javax.swing.ButtonGroup; 
import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 
import javax.swing.JTextField; 


public class RadioButtonPrompt extends JPanel 
          implements ActionListener { 

private static final long serialVersionUID = 1L; 
static String idString = "ID"; 
    static String profileString ="Profile"; 
    static String type = idString; 

    public RadioButtonPrompt() { 
     super(new BorderLayout()); 

     // Create radio buttons. 
     JRadioButton idButton = new JRadioButton(idString, true); 
     idButton.setMnemonic(KeyEvent.VK_I); 
     idButton.setActionCommand(idString); 

     JRadioButton profileButton = new JRadioButton(profileString); 
     profileButton.setMnemonic(KeyEvent.VK_P); 
     profileButton.setActionCommand(profileString); 

     // Group radio buttons. 
     ButtonGroup group = new ButtonGroup(); 
     group.add(idButton); 
     group.add(profileButton); 

     idButton.addActionListener(this); 
     profileButton.addActionListener(this); 

     JPanel radioPanel = new JPanel(new GridLayout(0, 1)); 
     radioPanel.add(idButton); 
     radioPanel.add(profileButton); 

     JPanel textPanel = new JPanel(); 
     JLabel URL = new JLabel(setJLabelValue()); 

     JTextField text = new JTextField("sampletextfield"); 
     text.setPreferredSize(new Dimension(100, 20)); 

     textPanel.add(URL); 
     textPanel.add(text); 

     JPanel buttonPanel = new JPanel(new GridLayout(1, 0)); 
     JButton submit = new JButton("Submit"); 
     submit.setMnemonic(KeyEvent.VK_S); 

     buttonPanel.add(submit); 


     add(radioPanel, BorderLayout.LINE_START); 
    add(textPanel, BorderLayout.CENTER); 
    add(buttonPanel, BorderLayout.PAGE_END); 

     setBorder(BorderFactory.createCompoundBorder()); 
    } 

    private String setJLabelValue() { 
    if (type.equals("ID")) { 
     return "http://steamcommunity.com/id/"; 
    } 
    return "http://steamcommunity.com/profiles/"; 

} 

    public void actionPerformed(ActionEvent e) { 

    // Returns either "Profile" or "ID" 
     type = ((JRadioButton)e.getSource()).getText(); 
     System.out.println(type); 


    } 

    private static void createAndShowGUI() { 
     JFrame frame = new JFrame("Steam Game Tracker"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JComponent newContentPane = new RadioButtonPrompt(); 
     newContentPane.setOpaque(true); //content panes must be opaque 

     frame.setContentPane(newContentPane); 

     // Display the window. 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 
+1

Was ist genau das Problem? – jjnguy

+0

Wie kann ich den Wert von JLabel ändern, wenn ein Optionsfeld ausgewählt wird? – Alex

Antwort

3

Werfen Sie einen Blick auf this SO Faden.

+0

Wow, ich hätte schwören können, dass ich überprüft habe, ob JLabel eine setText-Methode hat, danke für die Hilfe. – Alex

+0

Wenn dieser Beitrag dein Problem gelöst hat, dann markiere es so;) Du solltest in der Nähe jeder Antwort ein 'sehr gut' sehen können. – npinti

0

in actionPerformed() müssen Sie textpanel.setText() auf was auch immer Sie basierend auf der Schaltfläche geklickt haben. Ich schätze den Methodennamen, habe seit einiger Zeit keine UI-Sachen mit Java gemacht.

Verwandte Themen