我似乎对大多数人都有相反的问题.我有以下非常标准的代码,以查看用户是否想在关闭窗口之前进行一些保存:
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
另一个跨语言问题:有人能告诉我C#Threading构造最符合Java ReentrantLock和Condition类吗?ReentrantLock具有lockInterruptibly()和unlock()方法,而Condition具有signal()和await()方法.正是这种组合,我希望能够保存在C#代码中 - 或类似的东西......在此先感谢.
我一直回到这个问题的变种:它可能有一个非常简单的解决方案,但我似乎无法弄清楚...
我有一堆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
我有一些使用Borland C++用C语言编写的16位旧代码,它使用longjmps在多个堆栈之间切换.它通过执行malloc创建一个新堆栈,然后使用内联汇编程序将SS和SP寄存器设置为malloc'd区域地址的段和偏移量.我想将它转换为Win32,看起来两个指令应该由设置ESP的单个指令替换.这两条指令被CLI/STI对包围,但在Win32中这些指令给出了"特权指令",所以我现在已将它们删除了.谈到Windows,我是一个真正无辜的人,所以,我对我的第一个测试案例的工作感到非常惊讶!所以,我相当模糊的问题是问这里的专家,我在做什么是a)太危险了,或者b)如果我添加一些代码,采取一定的预防措施等会有效吗?如果是后者,应该添加什么,哪里可以找到它?我是否必须担心任何其他寄存器,如SS,EBX等?我使用没有优化...感谢任何提示的人可以给我.
我有一堆使用我编写的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().有人能指出我正确的方向吗?谢谢.
我正在使用144 dpi平板显示器在Win7上运行Swing应用程序.我的框架,选项窗格等的标题都在透明背景上显示为白色(Aero?).我一般都喜欢Aero,但白色标题很难读!我已经浏览了所有我能想到的UIManager属性,但它们似乎都没有任何效果.我可以在UIManager下面找到一个级别 - 并且最好为我的应用程序进行一次更改,因为我不想为每个选项窗格调用添加代码.也许我错过了一些非常基本的东西......但是我将不胜感激!
我也想更改标题字体,但这并不紧急!
另外,BTW,你在设置外观之前或之后放置了UIManager.put调用吗?或者不重要吗?
更多信息:我改变了我的Win7个性化,使用了一个名为Canada的Aero主题,标题现在是黑色的,使用了合理的字体.所以我的问题变成:
UIManager属性如何与Win7主题相关,并且由于我无法预测用户将使用哪些主题,如何控制窗格标题外观?
我将以另一种方式提出这个问题:为什么我不能改变应用程序显示面板中每个像素的颜色?是否有一个低于 UIManager 的级别,这似乎在你允许修改的内容中非常有限......?