我在Java窗口上使用Windows Vista/7的DWM功能时遇到问题.我想让我的画面的背景使用Aero风格.Windows API来做到这一点是函数提供DwmExtendFrameIntoClientArea的dwmapi库.我已经设法通过JNA正确调用该程序,它完成了应该做的事情(你可以看到,例如在调整框架大小时,在下一次重绘之前,你会看到尚未绘制的区域中的正确的空气动力效果,见附图).
但某处(我无法弄清楚在哪里)背景画在Aero效果上并且效果丢失了.
我已经尝试过的:
ContentPane设置为不透明度的自定义falseLayeredPane和RootPane假Frame而不是aJFrameJFrame/ ContentPane黑色/全透明setLayersOpaque及其自定义变体,请参阅第一个答案以获取更多详细信息到目前为止,我无法成功删除该背景.这是AWT/Swing的限制吗?如何删除该背景或正确使用Aero效果?
非常感谢您的帮助.
这里是没有任何内容的框架的屏幕截图,将RootPane,LayeredPane和ContentPane的不透明度设置为false.我在调整大小时快速完成了.您会看到效果已正确应用于Java尚未绘制的区域.
http://i55.tinypic.com/v614qo.png(作为新用户,我无法直接发布图片...)
经过进一步调查,我发现了以下奇怪的行为.如果窗口大小为150x150或更低,则内容将以透明方式显示.这对于普通窗口组件来说非常小问题.如果通过覆盖paint()方法直接在框架上绘制,则所有内容都是半透明的.此外,坐标系似乎稍微偏离,它显示为JFrame设置为窗口的实际零点的零点.因此,Swing试图绘制到实际上窗口边界所在的区域,然后当然不可见.
请参阅此屏幕截图:http://d-gfx.kognetwork.ch/java_aero_bug.png
这是我使用的代码.
需要jna.jar和platform.jar.可从JNA主页获得.
import com.sun.jna.Function;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinNT.HRESULT;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;
public class AeroFrame extends JFrame {
public AeroFrame() { …Run Code Online (Sandbox Code Playgroud) 我有一个来自.Net的对象,它具有SyncHashTable类型的属性,在抛出异常时无法查看.
单行复制:
[HashTable]::Synchronized(@{})
Run Code Online (Sandbox Code Playgroud)
多行更容易玩repro:
$ht = new-object hashtable
$ht.add("foo", "bar")
$hts = [Hashtable]::Synchronized($ht)
$hts
Run Code Online (Sandbox Code Playgroud)
错误:
format-default : Object reference not set to an instance of an object.
+ CategoryInfo : NotSpecified: (:) [format-default], NullReferenceException
+ FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.FormatDefaultCommand
Run Code Online (Sandbox Code Playgroud)
有人对此有任何见解吗?
$xml_file = file_get_contents(SITE_PATH . 'cms/data.php');
Run Code Online (Sandbox Code Playgroud)
问题是服务器禁用了URL文件访问.我无法启用它,它是托管的东西.
所以问题是这个.该data.php文件生成xml代码.
如何在不执行上述方法的情况下执行此操作并获取xml数据?
可能吗?
我需要在eclipse上安装哪些插件,以便.java文件显示行号?如何在.xml/.html上显示行号?
只有在我的机器上才会发生.基本上如果我运行以下所有内容都符合预期:
double d = 500.22;
int i = (int)d;
Console.WriteLine(i.ToString());
Run Code Online (Sandbox Code Playgroud)
输出为500.
但是,如果我在第一行放置一个断点并逐步执行,我总是恢复为零,输出为0.
我已经在其他机器上测试了这个,我无法复制,我甚至重新安装了VS2010,但它仍然会发生.所以我认为它必须是我在我的系统上的某种环境设置,但我无法弄清楚是什么.
其他人都有这个问题,我该如何摆脱它.
干杯.
编辑:问题似乎只是第二行.如果我在第1行放置一个断点,然后在它上面放置F5,那么一切都好.但是如果我进入/超过第二行,则转换似乎不起作用并且我保持在0.
我还尝试将i设置为1然后查看转换是否有效,但它将我更改为0并移除我的初始值为1.
这是一个截图:

我将照片存储为我的Core Data实体中的Transformable属性,这是要在iPhone的内存中加载的大量数据.如果我想要一个列出所有实体(可能是数百或数千)的TableView,但只需要显示它们的标题,Core Data是否仍会获取每张照片并在需要之前将其存储在RAM中?
我想要做的是只有当用户选择要在另一个ViewController中查看的记录时,才能对照片进行"lazy-fetch".什么是最节省内存的方法呢?
我开始使用NUnit在.NET 4.0上使用Visual Studio 2010在C#中编写测试用例.我想使用NUnit来测试.dll(一个C#类库项目)的公共函数.如何设置NUnit以使用我的项目?
我应该将NUnit代码添加到同一个类库项目进行测试,还是应该在同一个NUnit测试用例的解决方案中添加一个单独的项目?哪种是最佳做法?
如果我需要为NUnit测试用例创建一个单独的项目,我应该将它作为类库项目还是可执行文件?如果我把它作为一个类库项目,我该如何运行它?
如果我需要针对可执行文件而不是类库项目进行测试,那么进程和/或项目是否有任何更改?
是否有SQL方法可以找出我的架构中哪些列完全充满空值?在我知道的一些表中有一些字段没有被应用程序使用并将被删除,但我想看看是否有一个自动化的方法/脚本在整个数据库中找到它以找到代码审查的候选者/可能删除.
如果重要,请在x86上运行SQL Server 2005.
提前致谢!
我有一个奇怪的列表,以下列方式构建:
[[name_d, 5], [name_e, 10], [name_a, 5]]
Run Code Online (Sandbox Code Playgroud)
我想先用数字(desc)对它进行排序,然后,如果数字相同,则按名称(asc)排序.所以我想要的结果是:
[[name_e, 10], [name_a, 5], [name_d, 5]]
Run Code Online (Sandbox Code Playgroud)
我试着想一个我可以在sort方法中使用的lambda函数,但我不确定我能做到.
在我的代码中,我有一个类似于这样的行:
rval = subprocess.call(["mkdir",directoryName], shell=True)
Run Code Online (Sandbox Code Playgroud)
我可以检查rval它是否是,0或者1如果它是1,我想以"A subdirectory or file ben already exists."文件格式从命令中获取文本,所以如果我想确保文本是相同的,我可以将它与另一个文件进行比较.
是否有可能有这样的线,但我知道这不起作用
rval = subprocess.call(["mkdir",directoryName], shell=True) >> filename
Run Code Online (Sandbox Code Playgroud)
所以无论命令发生了什么,文本都被捕获filename,并且rval仍然有返回码?
c# ×2
java ×2
python ×2
.net ×1
core-data ×1
dwm ×1
eclipse ×1
hashtable ×1
ios ×1
jframe ×1
jna ×1
line ×1
null ×1
numbers ×1
nunit ×1
php ×1
powershell ×1
sorting ×1
sql ×1
sql-server ×1
subprocess ×1
swing ×1
synchronized ×1
unit-testing ×1