【问题标题】:Selecting jButton based on the text retrieved from the Data Base根据从数据库中检索到的文本选择 jButton
【发布时间】:2016-02-23 22:49:17
【问题描述】:

关于在 netbeans 中将数据库用于程序,我又遇到了一个问题。这是我的问题,我有一个包含男性和女性按钮的按钮组。当您单击“提交”按钮时,所选按钮会将其文本写入 mySQL 数据库。所以问题是,我不知道它的反面。

我会尽可能清楚地说明我的问题。我想从数据库中检索文本并在按钮组的其中一个按钮中选择检索到的文本。

例如,我从数据库中检索到“男性”,所以我想要一个代码来选择“男性”单选按钮。谢谢。

编辑:

所以我现在明白了。我正在寻找一些可以立即从数据库中检索到的文本中选择一个按钮的方法。我使用了粗略的过程,有点乱,但效果很好!

String temp = (jTable1.getModel().getValueAt(row, 11).toString());

    if ("Male".equals(temp)) {
        maleRButton.setSelected(true);
    }
    else if ("Female".equals(temp)) {
        femaleRButton.setSelected(true);
    }

【问题讨论】:

  • 你的问题还是有点宽泛——你到底卡在哪一步了?
  • 我会尽可能清楚地阐述它。如何使用从文本字段中检索到的文本来选择 jButton?例如,有一个文本字段和 2 个 jButton,男性和女性。如果我在文本字段中输入“男性”,则当我按下 Enter 时会选择男性按钮。谢谢先生。
  • 单选按钮/jbuttons ? (男性/女性)

标签: java mysql database swing radio-button


【解决方案1】:

ButtonGroup 有一个setSelected(...) 方法,可以帮助您设置它包含的其中一个JRadioButton,并设置它的状态。例如在下面的代码中,我使用 JComboBox 选择其中一个 JRadioButton 文本,然后使用 ButtonGroup 激活所选字符串:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;    
import javax.swing.*;

public class SelectButton extends JPanel {
    private static final String[] TEXTS = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
    private ButtonGroup buttonGroup = new ButtonGroup();
    private JComboBox<String> comboBox = new JComboBox<>(TEXTS);

    public SelectButton() {
        JPanel rBtnPanel = new JPanel(new GridLayout(1, 0));
        for (String text : TEXTS) {
            JRadioButton radioButton = new JRadioButton(text);
            radioButton.setActionCommand(text);
            rBtnPanel.add(radioButton);
            buttonGroup.add(radioButton);
        }

        comboBox.setSelectedIndex(-1);
        comboBox.addActionListener(new ComboListener());
        JPanel bottomPanel = new JPanel();
        bottomPanel.add(comboBox);

        setLayout(new BorderLayout());
        add(rBtnPanel, BorderLayout.CENTER);
        add(bottomPanel, BorderLayout.PAGE_END);
    }

    private class ComboListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            String command = comboBox.getSelectedItem().toString();
            Enumeration<AbstractButton> elements = buttonGroup.getElements();
            while (elements.hasMoreElements()) {
                AbstractButton btn = elements.nextElement();
                if (btn.getActionCommand().equals(command)) {
                    buttonGroup.setSelected(btn.getModel(), true);
                }
            }

        }
    }

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

        JFrame frame = new JFrame("Main");
        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();
            }
        });
    }
}

【讨论】:

  • 好先生,但我通过使用以下语句弄清楚了: String temp = (jTable1.getModel().getValueAt(row, 11).toString()); if ("Male".equals(temp)) { maleRButton.setSelected(true); } else if ("Female".equals(temp)) { femaleRButton.setSelected(true); }
  • @MarkJhomelOlimon:可以,但是我的代码可以使用任意数量的 JRadioButton,不需要硬编码的 if / else-if 块,因此更灵活。
  • 是的,先生,我已经理解了,如果我有超过 10 个单选按钮,我会实施。
【解决方案2】:

我创建了一个小方法,允许我设置任何单选组按钮。如果您有许多单选按钮,并且您不想使用 IF 来设置任何单选按钮,则非常方便。

public void setButtonGroup(String rdValue, Enumeration elements ){
    while (elements.hasMoreElements()){
        AbstractButton button = (AbstractButton)elements.nextElement();
        if(button.getActionCommand()==rdValue){
            button.setSelected(true);
        }
    }
}

然后

setButtonGroup(yourValue, yourButtonGroup.getElements());

还检查 setSelected a specific jradiobutton in a buttongroup based on action command

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2015-11-11
    • 2021-04-14
    • 2016-01-30
    • 2016-11-26
    相关资源
    最近更新 更多