我有一个已经编写的Java Swing应用程序(所以没有切换UI框架),我希望看起来至少使用GTKLookAndFeel.我已经考虑过LookAndFeels中字体和组件大小差异等问题,但有一点我无法弄清楚为什么我的弹出菜单根本没有边框.看起来他们正在使用不看起来像GTK本地的Synth边框.我希望能够支持Metal,Windows和GTK,但这些弹出窗口看起来很糟糕.这是一个错误吗?什么是一个很好的(非hacky)方法解决这个问题,而不会影响其他看起来很好的LookAndFeels边框?
我需要创建一个桌面CAD应用程序,它本质上应该有一个漂亮的现代GUI.我正在考虑创建一个WPF应用程序,以便我可以拥有一个丰富的用户界面.有人会建议我在WPF中设计精良的桌面应用程序GUI框架吗?我在这个视频中发现了一些很酷的GUI http://channel9.msdn.com/posts/Psychlist1972/Pete-at-PDC09-WPF-3d-Awesomeness-with-Tor-and-Robby/ 但不确定他们使用的控件在他们的申请中.有没有人知道他们在那里使用了哪些控件?
WPF中是否有任何属性网格控件?我试图在Windows窗体中使用网格.根据我的要求定制此网格似乎很困难.它直接从最基类到最大派生,显示了对象的所有属性.
如何在Java中创建一个如下所示的窗口:

我想要窗口布局,而不是标准的Windows边框,我不知道如何调用它.
编辑:外观对我来说不起作用:

JTableHaeder默认没有"按下"突出显示.(雨云)
NimbusDefaults表示它有一个默认的[Pressed]背景画家.
当我点击TableHeader时,我该怎么办?

更新1
在NimbusStyle.getExtendedState返回压在鼠标按下正确.但是NimbusStyle.getBackgroundPainter(SynthContext)返回null导致CacheKey "backgroundPainter $$实例"null的NimbusStyle.Values缓存中存在此状态.
有什么问题?
更新2
我的示例显示了一个JTableHeader和一个带有"Pressed Behavior"的JScrollBar.
对于JScrollBar,我putClientProperty( "Nimbus.State" )使用重绘问题.
public class Header extends JPanel{
public Header() {
super(new BorderLayout());
JTableHeader header = new JTable(5, 3).getTableHeader();
JScrollBar scroll = new JScrollBar(JScrollBar.HORIZONTAL);
add(header, BorderLayout.NORTH);
add(scroll, BorderLayout.SOUTH);
scroll.addMouseListener( new PressedBehavior() );
header.addMouseListener( new PressedBehavior() );
}
static public void main( String[] s ) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() …Run Code Online (Sandbox Code Playgroud) 我正在构建一个java应用程序,我想在运行时使用这些单选按钮更改应用程序的主题(外观和感觉).我不知道怎么做!

提前致谢!
有没有办法在Swing GTK LaF中更改默认字体大小?
GTK LaF似乎假定为72dpi,因此所有字体只有使用96dpi屏幕时应该是的大小的3/4.有关详细信息,请参阅此Fedora错误.我想在此期间找到一个解决方法,同时我等待修复.
我已经尝试过重置字体大小UIDefaults,例如,这里推荐的,但是(如前所述)GTK LaF似乎忽略了这一点.
我可以构建一个小部件工厂,它也可以设置所需的字体大小来创建我的所有Swing小部件,但这将是大规模侵入性的,所以如果有任何其他方式,我想避免使用该路径.
编辑:以下不起作用:
public class GTKLaF extends com.sun.java.swing.plaf.gtk.GTKLookAndFeel {
@Override
public UIDefaults getDefaults() {
final float scale = 3f;
final UIDefaults defaults = super.getDefaults();
final Map<Object,Object> changes = new HashMap<Object,Object>();
for (Map.Entry<Object,Object> e : defaults.entrySet()) {
final Object key = e.getKey();
final Object val = e.getValue();
if (val instanceof FontUIResource) {
final FontUIResource ores = (FontUIResource) val;
final FontUIResource nres =
new FontUIResource(ores.deriveFont(ores.getSize2D()*scale));
changes.put(key, nres); …Run Code Online (Sandbox Code Playgroud) 我有一个VB6应用程序,我希望在其应用程序范围内的控件之间具有一致的行为.例如,其中一种行为是在获得焦点时突出显示文本框,在失去焦点时删除突出显示.我希望这种情况发生在每一种形式上.
我正在尝试做的是有一个子程序,当它们加载时可以被所有表单调用,这将使这种行为发生.这样,我不必为每个单独的文本框手动编码以使其突出显示.
我试过让VB6在运行时将一个事件处理程序附加到一个控件,但它只是咆哮着我.我来自.Net背景,所以也许我接近VB6的错误.但是,如何在不必为每个控件手动编码的情况下获得所需的行为?
只是想知道,我通过以下方式定制了UIBarButtonItems
+ (UIBarButtonItem *)createBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *buttonImage = [[UIImage imageNamed:@"blabla.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];
CGRect buttonFrame = [button frame];
buttonFrame.size.width = 35;
buttonFrame.size.height = buttonImage.size.height;
[button setFrame:buttonFrame];
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
return buttonItem ;
}
Run Code Online (Sandbox Code Playgroud)
但是现在,我没有按钮背景图像上的阴影/光泽效果....
有没有办法让它自动完成,或者我必须以编程方式完成它?
编辑:

我花了最后几个小时试图解决这个问题,但没有成功.
我最近改为黑暗主题,但我在阅读工具提示/提示/ sugestions/overlay窗口时遇到问题(不知道该怎么称呼它,因为我已经看到人们调用所有这些不同的名字),以更易读的格式无需点击它就能阅读它.
已经尝试过切换windows工具提示颜色,如其他帖子所示,但没有成功.我正在使用Windows 7.
从下面的屏幕截图中可以看出,当显示工具提示/提示/ sugestions/overlay窗口时,它是非常难以理解的,并且必须单击它以使其可读是非常烦人的.
关于如何更改未聚焦的背景颜色或所有文本颜色的方法?
没有焦点

有焦点
