java 文本框获取焦点 showopendialog冲突_如何在非组件类中使用JFileChooser.showOpenDialog()?...

我有一个包含JMenuBar的

Java GUI项目,我刚刚添加了一个JToolBar.在以前的版本中,事件是在扩展JMenuBar的同一个类中实现的.我发现它很蹩脚,并将事件移动到另一个扩展AbstractAction的类中.我的目标是集中所有常见事件,使他们对不同的来源做出反应(JMenuBar,JToolBar等).但是,我遇到了JFileChooser.showOpenDialog()方法的问题.此方法将对话框的父组件作为参数.

如果我这样做:

import java.awt.*;

import java.awt.event.*;

import java.io.File;

import javax.swing.*;

import javax.swing.event.*;

public class ActionUsuels extends AbstractAction

{

private String nameAction;

/** Instance de MyFileChooser pour explorer les dossiers/fichiers*/

private MyFileChooser fc;

/** Instance d'OpenSave qui contient les algorithmes d'ouverture/sauvegarde*/

private OpenSave openSave;

ActionUsuels(String inName, String inPathIcon)

{

nameAction = inName;

putValue(Action.NAME, inName);

putValue(Action.SMALL_ICON, new ImageIcon(inPathIcon));

putValue(Action.SHORT_DESCRIPTION, inName);

this.fc = new MyFileChooser();

this.openSave = new OpenSave(Panneau.getUnivers());

}

public void actionPerformed(ActionEvent e)

{

// Evénement nouveau projet

if(nameAction == "OPEN_PROJECT")

{

fc.ContMode();

fc.refresh();

int returnVal = fc.showOpenDialog(ActionUsuels.this);

if (returnVal == MyFileChooser.APPROVE_OPTION)

{

File file = fc.getSelectedFile();

openSave.OpenCont(file);

}

}

static ActionUsuels actionInactive;

}

我收到以下错误:

The method showOpenDialog(component)

in the type JFileChooser is not

applicable for the arguments

(ActionUsuels).

我想这是正常的,因为ActionUsuels不扩展任何JComponent类.但我怎么能绕过那个呢?我正在努力做一个坏习惯吗?我的目的是编写一次事件,并能够从任何组件中调用它们.

只是为了让你明白我在做什么,我在菜单类中有这个:

actions = new ActionUsuels[nameActions.length];

for(int i = 0; i < nameActions.length; i++)

{

actions[i] = new ActionUsuels(nameActions[i], pathIcons[i]);

}

file_menu.add(actions[0]);

file_menu.addSeparator();

file_menu.add(actions[1]);

每个项目都与动作的名称,图标和合适的事件相关联!

任何的想法 ?

谢谢 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值