小编Pau*_*son的帖子

Java - 如何防止WindowClosing实际关闭窗口

我似乎对大多数人都有相反的问题.我有以下非常标准的代码,以查看用户是否想在关闭窗口之前进行一些保存:

  frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
  frame.addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent ev) {
      boolean close = true;
         // check some files, asking if the user wants to save
         // YES and NO handle OK, but if the user hits Cancel on any file,
         //   I want to abort the close process     
         // So if any of them hit Cancel, I set "close" to false
      if (close) {
          frame.dispose();
          System.exit(0);
         }
       }            
});
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,当我离开windowClosing时窗口总是关闭.将WindowAdapter更改为WindowListener没有任何区别.有点奇怪的是,文档明确说明"如果程序在处理此事件时没有明确隐藏或处理窗口,窗口关闭操作将被取消",但它对我来说不起作用.还有其他方法可以处理框架上的x吗?TIA

java swing jframe windowlistener

50
推荐指数
4
解决办法
6万
查看次数

C#对Java ReentrantLock和Condition的最佳匹配?

另一个跨语言问题:有人能告诉我C#Threading构造最符合Java ReentrantLock和Condition类吗?ReentrantLock具有lockInterruptibly()和unlock()方法,而Condition具有signal()和await()方法.正是这种组合,我希望能够保存在C#代码中 - 或类似的东西......在此先感谢.

c# java multithreading

9
推荐指数
1
解决办法
4223
查看次数

从超类方法返回子类对象

我一直回到这个问题的变种:它可能有一个非常简单的解决方案,但我似乎无法弄清楚...

我有一堆xQuantity形式的类,例如DistanceQuantity,AreaQuantity等,它们扩展了一个DimensionQuantity类.现在你可以添加或减去DistanceQuantity或AreaQuantity等,但你不能混合它们,所以我认为我需要在子类中有(短)加,减等方法,但我想减少任何逻辑重复到最低限度.但是,我需要返回子类的对象,这似乎很难从超类方法中做到.我相信这可以使用反射来完成,但AFAIK你仍然需要在子类方法的最后做一个演员,而且我被告知反射可能很昂贵......到目前为止我想出的最好的是:

在DistanceQuantity(和其他类似的):

public DistanceQuantity() {     
}

public DistanceQuantity add(DistanceQuantity d1) {
    DistanceQuantity dn = new DistanceQuantity(); 
    Object o = super.add(dn, this, d1, DistanceUnit.REF_UNIT);
    return (DistanceQuantity) o;
}
Run Code Online (Sandbox Code Playgroud)

在DimensionQuantity中(减去一些不太相关的语句):

public Object add(DimensionQuantity dn, DimensionQuantity d1, DimensionQuantity d2, 
  AbstractUnit au) {
    dn.unit = au;
    dn.scalar = d1.scalar + d2.scalar;
    dn.units = dn.scalar;    
    return dn;   
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以提出更精简的代码 - 这仍然是类型安全的吗?TIA

java subclassing

8
推荐指数
1
解决办法
5212
查看次数

用C++切换堆栈

我有一些使用Borland C++用C语言编写的16位旧代码,它使用longjmps在多个堆栈之间切换.它通过执行malloc创建一个新堆栈,然后使用内联汇编程序将SS和SP寄存器设置为malloc'd区域地址的段和偏移量.我想将它转换为Win32,看起来两个指令应该由设置ESP的单个指令替换.这两条指令被CLI/STI对包围,但在Win32中这些指令给出了"特权指令",所以我现在已将它们删除了.谈到Windows,我是一个真正无辜的人,所以,我对我的第一个测试案例的工作感到非常惊讶!所以,我相当模糊的问题是问这里的专家,我在做什么是a)太危险了,或者b)如果我添加一些代码,采取一定的预防措施等会有效吗?如果是后者,应该添加什么,哪里可以找到它?我是否必须担心任何其他寄存器,如SS,EBX等?我使用没有优化...感谢任何提示的人可以给我.

c++ winapi multiplestacks

7
推荐指数
2
解决办法
959
查看次数

为PNG文件设置DPI

我有一堆使用我编写的Java图表工具创建的图表 - 它们主要是黑白图表,水印块,偶尔还有其他颜色.它们目前被保存为JPG文件,我想将它们插入到我正在准备Print On Demand的书中.

本书是一个OpenOffice ODT文件,稍后将转换为PDF.

目前我使用的是JPG文件,但是他们使用的打印工具需要300 DPI,所以我修改了我的图表工具,使用getAsTree()将xDensity和yDensity设置为300,将resUnits设置为1,然后将图表扩展为3(300/96).IMO结果看起来不错!

不幸的是,另一个论坛上有人指出线图在JPG文件上"模糊",所以建议我切换到PNG,或者可能是BMP文件,这两个ODT文件都允许插入.

我的问题是BMP似乎没有DPI,而PNGMetadata似乎不支持getAsTree().有人能指出我正确的方向吗?谢谢.

png dpi

7
推荐指数
2
解决办法
3万
查看次数

在Java Swing中更改面板标题的颜色

我正在使用144 dpi平板显示器在Win7上运行Swing应用程序.我的框架,选项窗格等的标题都在透明背景上显示为白色(Aero?).我一般都喜欢Aero,但白色标题很难读!我已经浏览了所有我能想到的UIManager属性,但它们似乎都没有任何效果.我可以在UIManager下面找到一个级别 - 并且最好为我的应用程序进行一次更改,因为我不想为每个选项窗格调用添加代码.也许我错过了一些非常基本的东西......但是我将不胜感激!

我也想更改标题字体,但这并不紧急!

另外,BTW,你在设置外观之前或之后放置了UIManager.put调用吗?或者不重要吗?


更多信息:我改变了我的Win7个性化,使用了一个名为Canada的Aero主题,标题现在是黑色的,使用了合理的字体.所以我的问题变成:

UIManager属性如何与Win7主题相关,并且由于我无法预测用户将使用哪些主题,如何控制窗格标题外观?


我将以另一种方式提出这个问题:为什么我不能改变应用程序显示面板中每个像素的颜色?是否有一个低于 UIManager 的级别,这似乎在你允许修改的内容中非常有限......?

java swing uimanager windows-7

6
推荐指数
2
解决办法
1531
查看次数