在我的GUI项目中有一个方法,用于显示其中包含多个组件的JOptionPane
,其中2个组件ButtonGroups
,每个组件中有2个JRadioButtons
,第一组中第一个组件默认选择按钮,在第二组中默认选择第二个按钮,在第二个组中我想要禁用第一个按钮,直到选择第一个组中的第二个按钮,即如果用户对默认选择感到满意在BG1中,他们无法在BG2中进行选择,只有当他们在BG1中进行第二次选择时才能在BG2中选择其他选项。
JOptionPane
这种行为是否可行?
一直在查看JDialog
,JOptionPane
的教程并进行其他研究,但在这种情况下,这些都没有被证明有用。如果有人可以给我一点方向,找到一个可能很棒的解决方案......
答案 0 :(得分:0)
我认为它不适用于JOption。但我认为JDialog是可行的。
examble:
当你打开对话框时,你可以使用命令JFrame(这里你必须写你的窗口名称).enable(false)
你可以让它在couner中有一个关闭按钮 你可以有一个复选框 当复选框为true时。它会显示一个按钮,当你点击它时可能会使按钮隐藏
答案 1 :(得分:0)
最好的事情是JDialog
因为JOptionPane不支持这么多组件。
答案 2 :(得分:0)
在elective.addActionListener
语句中,我调用了错误的变量,cp12
代替cp6
,在下面发布了我的缩减代码,一切都很好,谢谢
public void displayAddSomething(ArrayList<String> items)
{
// cut down version only showing the button panels
// initialising the variables
JPanel buttPanel = new JPanel(new GridLayout(0, 1));
JPanel pointPanel = new JPanel(new GridLayout(0, 1));
JRadioButton core = new JRadioButton("Core Item: ", true);
final JRadioButton elective = new JRadioButton("Elective Item: ");
final JRadioButton cp6 = new JRadioButton("6 Points: ");
JRadioButton cp12 = new JRadioButton("12 Points: ", true);
ButtonGroup bg1 = new ButtonGroup();
ButtonGroup bg2 = new ButtonGroup();
// adding the buttons to buttPanel and the button group 1
buttPanel.add(new JLabel("Select Course Type"));
buttPanel.add(core);
buttPanel.add(elective);
buttPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2));
bg1.add(core);
bg1.add(elective);
// add buttons pointPanel and bg2
pointPanel.add(new JLabel("Select Credit Points"));
pointPanel.add(cp6);
pointPanel.add(cp12);
pointPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2));
bg2.add(cp6);
bg2.add(cp12);
cp6.setEnabled(false);
// add action listener for each of bg1 buttons so if event
// occurs the cp6 button will toggle between enabled and disabled.
elective.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
cp6.setEnabled(true);
}});
core.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
cp6.setEnabled(false);
}});
Object[] message = {buttPanel,pointPanel};
int result = JOptionPane
.showOptionDialog(
this,
message,
"...some text...",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, new String[] { "Submit", "Cancel" }, "Default");
if (result == JOptionPane.OK_OPTION)
{
// collecting all the input values in a string array to pass to
// another class for processing by the model...
}
else if (result == JOptionPane.NO_OPTION)
{
JOptionPane.showMessageDialog(this,
"You Have Elected Not to do anything At This Time",
"YOU HAVE COME THIS FAR AND YOU QUIT NOW....",
JOptionPane.QUESTION_MESSAGE);
}
}