Я хочу отключить кнопку на кадре из JDialog, Я пробовал все, но это не сработает. Выполнение программы начинается с кадра и при нажатии кнопки открывается диалоговое окно. Просто, когда вы нажимаете кнопку в диалоговом окне, кнопка кадра должна быть отключена, и диалог закроется.Невозможно отключить кнопку кадра от JDialog
BTW: все работает, его просто кнопка рамки, которая не отключается!
PS: Я кодирую это на NetBeans, поэтому я просто удалил ненужное кодирование для простоты.
Вот кодирование для кадра:
public class Frame extends javax.swing.JFrame {
Dialog D = new Dialog(this, true);
public Frame(){
setTitle("Frame");
initComponents();
setResizable(false);
}
void buttonDisable(){
Btn1.setEnabled(false);
}
private void Btn1ActionPerformed(java.awt.event.ActionEvent evt) {
D.setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Frame().setVisible(true);
}
});
}
// Variables declaration - do not modify
public javax.swing.JButton Btn1;
// End of variables declaration
}
Вот кодирование для JDialog Box:
public class Dialog extends javax.swing.JDialog {
public Dialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
setTitle("Dialog");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
new Frame().buttonDisable();
dispose();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Dialog dialog = new Dialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}
Я просто попытался это, она не работает. Что вы подразумеваете, сохраняя родителя в диалоговом окне? – Anafam
@Anafam, вы не вызываете buttonDisable в правильном экземпляре. Действительно, вы должны сохранить ссылку на исходный фрейм и вызвать buttonDisable в этом фрейме (вместо этого вы создаете новый фрейм, отличный от первого). Вероятно, вам следует рассмотреть основные понятия Java, чтобы полностью понять вашу проблему. –
В вашем коде фрейма вы создаете приватную переменную Dialog (не в соответствии с правилами именования, но это помимо точки), которая получает «это» в качестве аргумента. Когда мы смотрим на ваш код Dialog, мы видим этот красивый конструктор, который получает Frame, и просто использует фрейм для вызова super(). Но то, что вы на самом деле хотите, - это сохранить этот родительский элемент в частной переменной, чтобы впоследствии вы могли получить к нему доступ, когда вам действительно нужно, чтобы вы могли запускать некоторые определенные функции для этого родителя. Я также не понимаю, почему вам нужно второе главное в вашем диалоговом окне – 3xil3