我用一个JDesktopPane和几个JButton做了一个简单的用户界面。该程序的工作原理是,当单击按钮时,JInternalFrame将加载并禁用该按钮,以防止创建内部框架的副本。JInternalFrame上的取消按钮关闭帧,JButton再次启用。我的代码如下:
adminAddUser addNew = new adminAddUser();
private javax.swing.JButton newUserButton;
private void newUserButtonActionPerformed(java.awt.event.ActionEvent evt)
{
AdminPane.add(addNew);
addNew.setVisible(true);
newUserButton.setEnabled(false);
}
adminAddUser类上Cancel按钮的操作侦听器。dispose()方法用于关闭JInternalFrame。
private void cancelActionPerformed(java.awt.event.ActionEvent evt) {
int option;
option = JOptionPane.showConfirmDialog(rootPane, "Cancel?", "", JOptionPane.YES_NO_OPTION);
switch(option)
{
case (JOptionPane.YES_OPTION):
dispose();
break;
case (JOptionPane.NO_OPTION):
break;
default:
break;
}
}
最后,我的处理代码,用于在内部框架关闭时重新启用JButton。
private void AdminPaneComponentRemoved(java.awt.event.ContainerEvent evt) {
if(evt.getChild() == addNew)
{
newUserButton.setEnabled(true);
}
}
当单击JInternalFrame上的默认关闭按钮时,按钮会重新正常启用,但“取消”按钮只工作一次,第二次尝试使用时,JInternalFrame将关闭,但JButton不会重新启用。如何重新启用它?
任何帮助都将不胜感激,因为我是Java图形用户界面编码的新手。
我不明白。在我看来,adminaddUser
只创建一次。在这种情况下,您不应该使用disment
,因为对象将被销毁,无法重用。
这里有一个可能的解决方案。
>
创建一个接口
(我只这样做,因为没有公开主JFrame
)。让JFrame
表单类实现它。它只有一个方法,getNewUserButtont()
public interface GetButtonInterface {
JButton getUserButton();
}
public NewJFrame extends JFrame implements GetButtonInterface {
private JButton newUserButton;
@Override
JButton getUserButton() {
return newUserButton;
}
}
然后在您的
JInternaFrame
类中,它应该在构造函数中使用GetButtonInterface
arg。这样您就可以访问newUserButton
public AdminAddUser extends JInternalFrame {
private JButton newUserButton;
public AdminAddUser(GetButtonInterface gbi) {
newUserButton = gbi.getUserButton();
}
}
现在你可以用这个按钮做你想做的事了。每个新的
AdminAddUser
都将使用相同的newUserButton
实例。所以你可以1。使用InternalFrameListener
并覆盖internalFrameClosing()
在窗口关闭时启用该按钮。2.使用取消按钮actionPerrfomed
public AdminAddUser extends JInternalFrame {
private JButton newUserButton;
public AdminAddUser(GetButtonInterface gbi) {
newUserButton = gbi.getUserButton();
addInternalFrameListener(new InternalFrameAdapter(){
@Override
public void internalFrameClosing(InternalFrameEvent e) {
newUserButton.setEnabled(true);
}
});
}
private void cancelButtonActionPerformed(ActionEvent e) {
dispose();
newUserButton.setEnabled(true);
}
}
实例化新的
AdminAddUser
时,请使用passNewJFrame。这将
添加到它。这是GetButtonInterface
AdminAddUser addNew = new AdminAddUser(NewJFrame.this);
问题内容: 我在NetBeans中设计了两个JFrame。 当我单击“规则”按钮(即放在JFrame1上)时,它将打开第二个JFrame(但JFrame2在JFrame1的窗口上打开,这是我不想要的)。在第二个JFrame中,有一个“关闭”按钮。但是,当我单击此按钮时,我希望打开JFrame1并且它也能正常工作,但是JFrame2实际上没有关闭,并且JFrame1出现在JFrame2上方。 简而言
情况:JDesktopPane中有供应商_JinternalFrame。JDesktopPane中的call SetVisible(true)有一个Supplier_按钮,用于显示供应商框架。但当我通过Dispose()关闭供应商框架时;再次单击按钮后,它将隐藏并不再显示。有两个选项可以使用setshow();和setHide()而不是setDispose()。但我想重新创建Jinternalfr
这个问题似乎不是关于特定的编程问题、软件算法或主要由程序员使用的软件工具。如果你认为这个问题会在另一个Stack Exchange网站上出现,你可以留下评论来解释问题的答案。 更改crontable文件后是否必须重新启动cron?
问题内容: 我可以轻松进行“作业”,但是我发现输入流的关闭存在一些问题。简单地说,我必须使用Java创建一个联系人“列表”应用程序,才能以正确的方式使用多态。所以我有一个Contact类和一个Private类(contact)。在这两个类中,都有一个Modify方法来更改变量的值。 这是不会产生问题的Contact方法 相反,这是Private中方法的替代。首先,我创建一个Private对象,然后
关闭Android Studio选项卡后,我无法再次打开它。在卸载并重新安装软件之前,我无法打开Android Studio。每隔一段时间,屏幕就会变灰,我不得不重新安装。 我尝试过右键单击并选择“打开”,但它没有任何作用。 我原以为Android Studio会在点击后打开,但似乎我从来没有安装过它。它只在我关闭选项卡之前有效。 更新: 我进入我的文件,点击了一个叫做“工作室”的。它给了我一个名
问题内容: 我正在尝试在我的c程序中检测从Linux关闭或重新启动。我发现程序可以使用signal(SIGTERM,handler)(SIGKILL,handler)。但是,如果用户也使用命令杀死该进程,这两个触发器也会触发。 他们说,在某些解决方案中,可以使用运行级别,但无法运行。在系统初始化运行级别之前,不知道该进程是否被杀死。我什至尝试将脚本放在rcx.d中,但仍然无法正常工作。 有人建议吗