Как включить текстовое поле при нажатии кнопки?
Прежде чем начать, я начинающий программист.
Как включить текстовое поле при нажатии кнопки.
У меня есть два кадра, один из которых имеет JFields, а другой за исключением. Когда возникает исключение> setEditable(false), но какое заявление я должен сделать, чтобы включить JFields после того, как пользователь нажмет кнопку "все в порядке" - что я сделал в исключении -?
Я попытался добавить статическое логическое значение к фрейму исключения, и внутри действия, выполняемого этим классом, я инициализировал логическое значение true.
в другом классе я добавил if if, если это логическое значение true, тогда setEditable (true)
- ======== - Суть этой программы в том, что при возникновении исключения пользователь не может ничего вводить в поля, пока не закроет окно исключения.
Я хотел бы, чтобы вы мне помогли.
Со всей любовью, программисты.
Код действия, выполненного для ОКНА ИСКЛЮЧЕНИЯ (с кнопкой "ОК").
public void actionPerformed(ActionEvent e){
{
allow=true; //static boolean
Container TheFrame = OKButton.getParent();
do TheFrame = TheFrame.getParent();
while (!(TheFrame instanceof JFrame));
((JFrame) TheFrame).dispose();
}
Код действия, выполненного для ОСНОВНОЙ ПРОГРАММЫ (с тремя полями, исключение произойдет, когда пользователь введет не цифры). Я добавил некоторые комментарии, чтобы уточнить.
public void actionPerformed(ActionEvent event) {
try{
r =Double.parseDouble(RField.getText());
s=Double.parseDouble(SField.getText());
h=Double.parseDouble(HField.getText());
Cone C = new Cone(r,s,h);//class cone
if (event.getSource() instanceof JButton) {
JButton clickedButton = (JButton) event.getSource();
if (clickedButton == VolumeButton) {
Result.append("VOLUME = "+C.volume()+ "\n");
ifV= true;//this's for clearing the fields for new entries.
}
if (clickedButton == AreaButton) {
Result.append("SURFACE AREA = "+C.surfaceArea()+ "\n");
ifA= true;//this's for clearing the fields for new entries.
}
if(ifA&&ifV){ // clearing the fields for new entries.
SField.setText(CLEAR);
HField.setText(CLEAR);
RField.setText(CLEAR);
ifV=false; ifA= false;}
}
SList.addShape(C);
}
catch(NumberFormatException e){
//Object of type "Exception__" already created
Ex.setVisible(true);//class "Exception__" is the one i've made for Exception window
SField.setText(CLEAR);
HField.setText(CLEAR);
RField.setText(CLEAR);
SField.setEditable(false);
HField.setEditable(false);
RField.setEditable(false);
}/*here, if the user clicked on -that okay in Exception window-
and variable allow initialized to "true" those statements should extend. I guess?
- everything worked correctly except for this ?*/
if(Ex.allow){
SField.setEditable(true);
HField.setEditable(true);
RField.setEditable(true); }
}
СПАСИБО ВСЕМ ЭТО НАКОНЕЦ РАБОТАЛО.
я добавил
Ex.allow(SField,HField,RField);
к улову.
и добавил этот метод в класс Exception__:
public void allow(JTextField js,JTextField jh,JTextField jr){
HField =jh;
SField =js;
RField =jr;
}
наконец, к действию, выполненному из класса Exception__:
SField.setEditable(true);
HField.setEditable(true);
RField.setEditable(true);
WOHOOOO. Это так здорово, лол. Спасибо всем. я должен удалить свой вопрос или оставить его другим, кто может столкнуться с той же проблемой, что и я?:П
2 ответа
Ваш вопрос требует гораздо больше подробностей. Но если все, что вы хотите, чтобы показать "окно исключений" и позволить пользователю делать что-либо еще только после того, как оно закрывает это окно, я думаю, все, что вам нужно, это MessageDialog: см. JOptionPane
Если вам нужно больше информации для отображения, вы можете создать свой собственный модальный JDialog
,
Смотрите Как сделать диалоги
Сделайте текстовое поле скрытым, написав:
jTextfield.setVisible (fasle);
в конструкторе кода вашей формы. Затем используйте кнопку события "Действие -> Действие выполнено" и напишите код:
jTextfield.setVisible (истина);
и, таким образом, ваше текстовое поле будет видно только после нажатия кнопки.