当前位置: 首页 > 知识库问答 >
问题:

将所选JRadioButton中的文本显示到JTextArea

公孙锋
2023-03-14

我正在做作业(请不要替我做作业)。我已经完成了95%。不过,我在这最后一点上遇到了麻烦。我需要在JText区域显示所选的性别。我必须使用JRadioButton进行性别选择。

我知道JradioButton的工作原理不同。我设置了动作监听器和助记符。我想我搞砸了。看来我可能需要整个团队来设定和行动列表。

非常感谢您的帮助。

以下是我的代码(减去我认为不需要的部分,以便其他人无法复制粘贴作业):

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.TitledBorder;


public class LuisRamosHW3 extends JFrame {

private JLabel WelcomeMessage;

private JRadioButton jrbMale = new JRadioButton("Male");

private JRadioButton jrbFemale = new JRadioButton("Female");

public LuisRamosHW3(){

setLayout(new FlowLayout(FlowLayout.LEFT, 20, 30));


JPanel jpRadioButtons = new JPanel();
jpRadioButtons.setLayout(new GridLayout(2,1));
jpRadioButtons.add(jrbMale);
jpRadioButtons.add(jrbFemale);
add(jpRadioButtons, BorderLayout.AFTER_LAST_LINE);


ButtonGroup gender = new ButtonGroup();
gender.add(jrbMale);
jrbMale.setMnemonic(KeyEvent.VK_B); 
jrbMale.setActionCommand("Male");
gender.add(jrbFemale);
jrbFemale.setMnemonic(KeyEvent.VK_B);
jrbFemale.setActionCommand("Female");

//Set defaulted selection to "male"
jrbMale.setSelected(true);

//Create Welcome button
JButton Welcome = new JButton("Submit");
add(Welcome);

Welcome.addActionListener(new SubmitListener());
WelcomeMessage = (new JLabel(" "));
add(WelcomeMessage);


}
class SubmitListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){

String FirstName = jtfFirstName.getText();
String FamName = jtfLastName.getText();
Object StateBirth = jcbStates.getSelectedItem();
String Gender = gender.getActionCommand(); /*I have tried different 
variations the best I do is get one selection to print to the text area*/

WelcomeMessage.setText("Welcome, " + FirstName + " " + FamName + " a "
+ gender.getActionCommmand + " born in " + StateBirth);
}
}
} /*Same thing with the printing, I have tried different combinations and just can't seem to figure it out*/ 

共有2个答案

长孙阳焱
2023-03-14

建议:

  • 将ButtonGroup变量、性别、字段(在类中声明)设为一个字段,不要在构造函数中声明它,这将使其范围仅限于构造函数。它必须在全班可见

例如

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

import javax.swing.*;

public class RadioButtonEg extends JPanel {
   public static final String[] RADIO_TEXTS = {"Mon", "Tues", "Wed", "Thurs", "Fri"};

   // *** again declare this in the class.
   private ButtonGroup buttonGroup = new ButtonGroup();
   private JTextField textfield = new JTextField(20);

   public RadioButtonEg() {
      textfield.setFocusable(false);
      JPanel radioButtonPanel = new JPanel(new GridLayout(0, 1));
      for (String radioText : RADIO_TEXTS) {
         JRadioButton radioButton = new JRadioButton(radioText);
         radioButton.setActionCommand(radioText); // **** don't forget this
         buttonGroup.add(radioButton);
         radioButtonPanel.add(radioButton);
      }

      JPanel bottomPanel = new JPanel();
      bottomPanel.add(new JButton(new ButtonAction("Press Me", KeyEvent.VK_P)));

      setLayout(new BorderLayout());
      add(radioButtonPanel, BorderLayout.CENTER);
      add(bottomPanel, BorderLayout.PAGE_END);
      add(textfield, BorderLayout.PAGE_START);
   }

   private class ButtonAction extends AbstractAction {
      public ButtonAction(String name, int mnemonic) {
         super(name);
         putValue(MNEMONIC_KEY, mnemonic);
      }

      @Override
      public void actionPerformed(ActionEvent e) {
         ButtonModel model = buttonGroup.getSelection();
         if (model == null) {
            textfield.setText("No radio button has been selected");
         } else {
            textfield.setText("Selection: " + model.getActionCommand());
         }

      }
   }

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

      JFrame frame = new JFrame("RadioButtonEg");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_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();
         }
      });
   }
}
丁鸿信
2023-03-14

我在JTable上做了一个类似的问题,我们从广播组获得选择,然后采取相应的行动。想到分享解决方案。

在这里,我使用操作侦听器对单选按钮进行了分组,每个单选按钮都有一个与之关联的操作命令。当用户单击单选按钮时,将触发一个操作,随后会生成一个事件,我们取消选择其他单选按钮并使用新选择刷新文本区域。

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;

public class RadioBtnToTextArea {
    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                new RadioBtnToTextArea().createUI();
            }
        };

        EventQueue.invokeLater(r);
    }

    private void createUI() {
        JFrame frame = new JFrame();

        JPanel panel = new JPanel(new BorderLayout());
        JPanel radioPnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JPanel textPnl = new JPanel();


        JRadioButton radioMale = new JRadioButton();
        JRadioButton radioFemale = new JRadioButton();

        JTextArea textArea = new JTextArea(10, 30);

        ActionListener listener = new RadioBtnAction(radioMale, radioFemale, textArea);

        radioPnl.add(new JLabel("Male"));
        radioPnl.add(radioMale);
        radioMale.addActionListener(listener);
        radioMale.setActionCommand("1");

        radioPnl.add(new JLabel("Female"));
        radioPnl.add(radioFemale);
        radioFemale.addActionListener(listener);
        radioFemale.setActionCommand("2");

        textPnl.add(textArea);

        panel.add(radioPnl, BorderLayout.NORTH);
        panel.add(textPnl, BorderLayout.CENTER);


        frame.add(panel);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}


class RadioBtnAction implements ActionListener {

    JRadioButton maleBtn;
    JRadioButton femaleBtn;
    JTextArea textArea;

    public RadioBtnAction(JRadioButton maleBtn, 
                                JRadioButton femaleBtn, 
                                    JTextArea textArea) {
        this.maleBtn = maleBtn;
        this.femaleBtn = femaleBtn;
        this.textArea = textArea;
    }

    @Override
    public void actionPerformed(ActionEvent e) {

        int actionCode = Integer.parseInt(e.getActionCommand());

        switch (actionCode) {
        case 1:
            maleBtn.setSelected(true);
            femaleBtn.setSelected(false);
            textArea.setText("Male");
            break;
        case 2: 
            maleBtn.setSelected(false);
            femaleBtn.setSelected(true);
            textArea.setText("Female");

            break;
        default:
            break;
        }   
    }

}
 类似资料:
  • 问题内容: 我想补充到。我用了给定的代码 但是,当我运行此命令时,我将获得另一种颜色的列,并且当我单击单选按钮时,什么也没有发生。我正在使用netbeans。如果我尝试自定义,则不会显示任何内容。给我适当的指导。 问题答案: 如果要编辑表格单元格的值,则必须设置一个。 您应该在渲染器中创建一个单一文件,并在任何地方重复使用,这就是TableCellRenderer的目的。 如果您不打电话,则不需要

  • 我的文本文件包含的数据为:sample。txt 内存头1 1 NA设置字符串SRC代码 MEMHEAD 1 2 NA设置字符串memIdnum LGLNAME 1 5 NA先设置字符串 我已经创建了MyClassModel类,将AbstractTableModel扩展为: 通过这种方式,我从文件中检索数据。现在当我制作一个并使用。我得到一个。 继续: 文本文件数据显示在JTable中,但是JTab

  • 就像渲染器和编辑器听起来一样简单,尽管有十几个这样的书签,我还是回到类似的问题上,我缺少了一些基本的东西。我想把任何旧的文本文件拖到一个2列的JTable中,让第一列显示文件名,第二列包含一个JComboBox,它的选项取决于拖动文件的内容。(在下面的代码中,我只是伪造了几个条目。) 这一切都正常工作,直到我从一个组合框中做出一个选择--该选择不显示--只是一个组合框,正确填充但没有做出选择。我知

  • 我试图在用户选择标签时显示文本, 例如,我有以下代码: 一旦用户单击复选框,将出现以下文本: “如果您选择了是,……” 我不确定JavaScript是否是实现这一点的最佳途径。 但是,如果是的话,会是这样的吗

  • 显示文本 使用一个 Text 对象 (PIXI.Text)在舞台上展示文本。简单来说,你可以这样使用它: let message = new Text("Hello Pixi!"); app.stage.addChild(message); 这将会在画布上展示文本“Hello, Pixi”。Pixi的文本对象继承自Sprite类,所以它包含了所有相同的属性,像x, y, width, height

  • 我正在尝试编写一些相当基本的代码,但多年来没有接触过JavaScript,我真的不确定最好的方法是什么。 目标:有一个42个竞技场部分数字的下拉列表,当选择这些数字时,将根据该数字显示“红色”或“黑色”。为了提供过多信息,部分编号是: 黑色:103, 105, 107, 111, 113, 115, 119, 121, 123, 127, 129, 131, 201, 203, 205, 207,