无法启用灰显 (.setEnabled(false)) JtextField 或 JTextArea
Cannot enable grayed-out (.setEnabled(false)) JtextField or JTextArea
不幸的是,我无法为 JTextField 或 JTextField(都试过)打开 .setEnable()。它保持灰色,因此用户无法输入。请帮帮我。
详细信息:taTwo 可以是 JTextField 或 JTextArea,但我尝试的任何一个都无法启用。它应该为 A 禁用但应该为 B 启用,因此如果用户选择 A he/she 不能在 taTwo 字段中输入值,但是如果用户选择 B he/she 可以在 taTwo 中写入。
方法如下:
public void btnAddtreeAction() {
this.btnAddtree.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JPanel dialogPanel = new JPanel();
dialogPanel.setPreferredSize(new Dimension(60,60));
String[] choices = {"A", "B"};
JComboBox<String> cb = new JComboBox<String>(choices);
JTextArea taOne = new JTextArea(1,30);
JTextField taTwo = new JTextField();
taTwo.setEnabled(false);
Object[] myObject = {"Options:", cb,
"Input first:", taOne,
"Input second:", taTwo};
JOptionPane.showConfirmDialog(frame, myObject, "Form", JOptionPane.OK_CANCEL_OPTION);
if (cb.getSelectedItem().toString().equals("A")) {
//something will happen here
} else if (cb.getSelectedItem().toString().equals("B")) {
taTwo.setEnabled(true);
//something will happen here
}
}
});
}
在您的 actionPerformed
方法中,您正在创建一个 new JTextField
,您不会将其添加到 GUI 中。我假设您在代码中的某个地方有另一个名为 taTwo
的变量,而您没有 post。您 没有 在 actionPerformed
方法中更改该变量。尝试删除这行代码:
JTextField taTwo = new JTextField();
如果我正确理解了你的问题,你需要将你的 enablemet/disablement 代码移动到另一个 ActionListener
并将其添加到你的组合框中。像这样:
public void btnAddtreeAction() {
this.btnAddtree.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JPanel dialogPanel = new JPanel();
dialogPanel.setPreferredSize(new Dimension(60,60));
String[] choices = {"A", "B"};
JComboBox<String> cb = new JComboBox<String>(choices);
JTextArea taOne = new JTextArea(1,30);
JTextField taTwo = new JTextField();
taTwo.setEnabled(false);
cb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (cb.getSelectedItem().toString().equals("A")) {
taTwo.setEnabled(false);
//something will happen here
} else if (cb.getSelectedItem().toString().equals("B")) {
taTwo.setEnabled(true);
//something will happen here
}
}
});
Object[] myObject = {"Options:", cb,
"Input first:", taOne,
"Input second:", taTwo};
JOptionPane.showConfirmDialog(frame, myObject, "Form", JOptionPane.OK_CANCEL_OPTION);
}
});
}
不幸的是,我无法为 JTextField 或 JTextField(都试过)打开 .setEnable()。它保持灰色,因此用户无法输入。请帮帮我。
详细信息:taTwo 可以是 JTextField 或 JTextArea,但我尝试的任何一个都无法启用。它应该为 A 禁用但应该为 B 启用,因此如果用户选择 A he/she 不能在 taTwo 字段中输入值,但是如果用户选择 B he/she 可以在 taTwo 中写入。
方法如下:
public void btnAddtreeAction() {
this.btnAddtree.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JPanel dialogPanel = new JPanel();
dialogPanel.setPreferredSize(new Dimension(60,60));
String[] choices = {"A", "B"};
JComboBox<String> cb = new JComboBox<String>(choices);
JTextArea taOne = new JTextArea(1,30);
JTextField taTwo = new JTextField();
taTwo.setEnabled(false);
Object[] myObject = {"Options:", cb,
"Input first:", taOne,
"Input second:", taTwo};
JOptionPane.showConfirmDialog(frame, myObject, "Form", JOptionPane.OK_CANCEL_OPTION);
if (cb.getSelectedItem().toString().equals("A")) {
//something will happen here
} else if (cb.getSelectedItem().toString().equals("B")) {
taTwo.setEnabled(true);
//something will happen here
}
}
});
}
在您的 actionPerformed
方法中,您正在创建一个 new JTextField
,您不会将其添加到 GUI 中。我假设您在代码中的某个地方有另一个名为 taTwo
的变量,而您没有 post。您 没有 在 actionPerformed
方法中更改该变量。尝试删除这行代码:
JTextField taTwo = new JTextField();
如果我正确理解了你的问题,你需要将你的 enablemet/disablement 代码移动到另一个 ActionListener
并将其添加到你的组合框中。像这样:
public void btnAddtreeAction() {
this.btnAddtree.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JPanel dialogPanel = new JPanel();
dialogPanel.setPreferredSize(new Dimension(60,60));
String[] choices = {"A", "B"};
JComboBox<String> cb = new JComboBox<String>(choices);
JTextArea taOne = new JTextArea(1,30);
JTextField taTwo = new JTextField();
taTwo.setEnabled(false);
cb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (cb.getSelectedItem().toString().equals("A")) {
taTwo.setEnabled(false);
//something will happen here
} else if (cb.getSelectedItem().toString().equals("B")) {
taTwo.setEnabled(true);
//something will happen here
}
}
});
Object[] myObject = {"Options:", cb,
"Input first:", taOne,
"Input second:", taTwo};
JOptionPane.showConfirmDialog(frame, myObject, "Form", JOptionPane.OK_CANCEL_OPTION);
}
});
}