小编Pet*_*ter的帖子

这些错误和警告图标作为java资源在哪里?

我有一个自定义树单元格渲染器,我用它来渲染自定义图标JTree,我真的很喜欢警告图标和JOptionPane分别为警告消息和错误消息显示的错误图标.显然,我可以使用下面的代码来获取我自己使用的图标,但这很重要,需要我实例化我永远不会使用的对话框:

public class ValidationCellRenderer extends DefaultTreeCellRenderer {
    private Icon warnIcon;
    private Icon errorIcon;

    public ValidationCellRenderer() {
        JOptionPane optionPane = new JOptionPane(new Object(), 
            JOptionPane.WARNING_MESSAGE);
        warnIcon = optionPane.getIcon();
        optionPane = new JOptionPane(new Object(), 
            JOptionPane.ERROR_MESSAGE);
        errorIcon = optionPane.getIcon();
    }
}
Run Code Online (Sandbox Code Playgroud)

必须有更好的方法将这些图标作为资源,但我找不到从Java API中执行此操作的简单方法.有人有什么建议吗?

java swing jtree

16
推荐指数
2
解决办法
7960
查看次数

没有收到NSWindowWillCloseNotifications

在我正在创建的应用程序中,我有一个欢迎窗口,其中包含最近的文档列表(类似于新Xcode 4的欢迎窗口的功能).我在发布的欢迎窗口中注册了应用程序的委托和视图控制器NSWindowWillCloseNotification.不幸的是,只有应用程序委托才会收到此事件的通知.

我尝试了以下,所有行为都相同(窗口控制器未通知):

  • 删除AppDelegate的通知注册码,希望以某种方式"消费"通知.
  • 更改视图控制器上的方法-(void)windowIsClosing:,使其与应用程序委托的名称不同(相当长镜头,但我必须尝试)
  • addObserver:...ViewController中的调用移动到代码中的其他位置(因此在初始化程序期间不会调用它,如果某种程度上重要的话).
  • 我在其dealloc方法期间从通知中心取消注册我的视图控制器,但我确保在窗口关闭后不是在关闭期间调用dealloc方法.

我还试图在委托和控制器中监听其他事件,例如NSWindowWillMoveNotification,并再次通知委托但不通知视图控制器.我的视图控制器不是第一响应者链的一部分,但这应该无关紧要,因为我正在注册一个不希望处理无目标操作的通知.

因此,为什么我的控制器没有收到窗口关闭事件的通知,但我的应用代表是?

相关代码如下.... App代表:

@interface AppDelegate : NSObject <NSApplicationDelegate> {
}
@end

@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(windowClosing:) 
                                                 name:NSWindowWillCloseNotification 
                                               object:nil];
    // other initialization stuff
    [self showWelcomeWindow];
}

- (void)windowClosing:(NSNotification*)aNotification {
    // this method gets called when any window is closing
}
@end
Run Code Online (Sandbox Code Playgroud)

控制器:

@interface ViewController : NSObject {
}
@end

@implementation ViewController
- (id)init {
    self = [super init];
    if (self) …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c

2
推荐指数
1
解决办法
2755
查看次数

标签 统计

cocoa ×1

java ×1

jtree ×1

macos ×1

objective-c ×1

swing ×1