我见过很多使用
getAccessibleContext().setAccessibleDescription(...)
设置一些"魔术"描述的例子.
这种描述有什么用?在哪里可以看到它应该如何支持可访问性?
为什么不使用setDescription(...)?
另外,您对Java辅助功能的看法/经验是什么?
我指的是这个Nimbus参考.
我试图将全局字体设置得略大一些:
UIManager.put("defaultFont", new Font(Font.SANS_SERIF, 0, 16));
Run Code Online (Sandbox Code Playgroud)
...仅适用于菜单,但没有其他功能(按钮,标签).
我试着改变标签和按钮字体
UIManager.put("Button.font", new Font(Font.SANS_SERIF, 0, 16));
UIManager.put("Label.font", new Font(Font.SANS_SERIF, 0, 16));
Run Code Online (Sandbox Code Playgroud)
但字体仍然存在.
唯一对我有用的是派生字体:
someButton.setFont(someButton.getFont().deriveFont(16f));
Run Code Online (Sandbox Code Playgroud)
但这不是一个选项,因为必须 手动为每个元素执行此操作.
注意,为UIManager导出字体也不起作用:
UIManager.put("Label.font",
UIManager.getFont("Label.font").deriveFont(16f));
Run Code Online (Sandbox Code Playgroud)
我测试了Linux和Windows下的所有内容:相同的行为.
我只是无法理解API如何如此混乱.如果一个方法被称为setFont(..),那么我希望它设置字体.如果此方法无法在任何可想象的情况下设置字体,则应该弃用它.
编辑:
问题不仅适用于Nimbus,还适用于默认的LAF.
如何在Java中制作带有软边框的非矩形窗口?
软边框(也称为软剪裁)是没有锯齿伪影的边框.
我在网上搜索了很多,发现了几个关于半透明和/或非矩形窗户的帖子.
"软边界"这一主题令人困惑.似乎我发现的信息涉及将软边框应用于另一个Java组件内部的组件.
但是,我可以,或者我可以不将软边框应用于仅放置在桌面上的自定义形状的JWindow吗?
我主要提到以下帖子:http:
//today.java.net/pub/a/today/2008/03/18/translucent-and-shaped-swing-windows.html
当谈到软剪辑时,文章转发到
http://weblogs.java.net/blog/campbell/archive/2006/07/java_2d_tricker.html
但是这里描述了对现有Graphics2D对象的软剪辑.
注意:我正在谈论的那些注释是由JSR305指定的.
我有最新的Findbugs(1.3.9), 当一些用@Nonnull注释的字段被赋值为null时,它会正确地发现错误.
但是,在我的项目中,"非空逻辑"是默认情况.我会说 只有5%的情况才明确允许null.
因此,用@Nonnull注释95%的字段会非常不方便.我更愿意用@Nullable注释那些5%的字段.
我尝试使用@Nonnull注释整个包,它不会改变任何东西.
那么,以某种方式可以指定默认逻辑?
我遇到了Java编译器的一个完全奇怪的行为.
当涉及循环泛型类型关系时,我无法将超类型强制转换为子类型.
JUnit测试用例重现问题:
public class _SupertypeGenericTest {
interface ISpace<S extends ISpace<S, A>, A extends IAtom<S, A>> {
}
interface IAtom<S extends ISpace<S, A>, A extends IAtom<S, A>> {
}
static class Space
implements ISpace<Space, Atom> {
}
static class Atom
implements IAtom<Space, Atom> {
}
public void test() {
ISpace<?, ?> spaceSupertype = new Space();
IAtom<?, ?> atomSupertype = new Atom();
Space space = (Space) spaceSupertype; // cast error
Atom atom = (Atom) atomSupertype; // …Run Code Online (Sandbox Code Playgroud) 我创建了一个自定义组件(派生自JComponent),它代表了一个可拖动的Bezier曲线.
(看起来像挂电缆,有人可能从Bender或Cubase知道它)
我的问题是:曲线可能变得非常长,让我们说从桌面的左上角到右下角.
这使得Swing的重绘功能效率低下:曲线的面积可能只有几百个像素,但是组件的面积(大部分是"透明的")是数百万像素的大.
我的主观印象是:
曲线越长,拖动时的闪烁就越多.
我希望我能清楚地说明这个问题.
也许当我以某种方式可以自己选择时,它会有所帮助 ,该组件的哪些区域需要重新绘制.
编辑:
这么乱!我正在使用Netbeans分析应用程序,这有助于正常找到低效的代码,但是这个Swing框架正在进行数百次嵌套调用!我只是想不通,什么是缓慢的,为什么.
顺便说一句,禁用super.paint(...)或super.paintComponent(...)没有帮助.
我在找到JPopupMenu位置时遇到了麻烦.
我需要的是能够右键单击工作区,点击一些
菜单项,然后创建一个元素来代替正确的先前显示的菜单的位置下.
我试着获取菜单本身及其项目的位置,
但它给了我大约0的常量值.(参见代码中的注释)
由于关注点分离,菜单显示在一个类中,
而其操作在另一个类中处理.
public final class MainFrameMenu
extends JPopupMenu
implements ActionListener {
private final MainFrame mainFrame;
private final JMenuItem item1 = new JMenuItem("add line");
private final JMenuItem item2 = new JMenuItem("add element");
public MainFrameMenu(MainFrame mainFrame) {
super("Main menu");
this.mainFrame = mainFrame;
item1.addActionListener(this);
item2.addActionListener(this);
add(item1);
add(item2);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == item1) {
System.out.println(getLocation()); // gives ALWAYS [0, 0]
System.out.println(item1.getLocation()); // gives …Run Code Online (Sandbox Code Playgroud) 我想知道是否有关于Swing组件生命周期的良好文档(或(可查看的)电子书).
无论如何,"生命周期"是正确的术语吗?
我希望找到问题的答案,例如:
我不时遇到我的应用程序的奇怪行为,例如:
我需要为项目使用面向对象的数据存储库.
它将成为维基和CMS之间的东西.
我还不是坚持领域的专家.
我想Hibernate和Jackrabbit是要去的框架,对吧?
至于我正确地告知,兔崽子不不支持
注释或其他方便的技术映射
对象实例和数据存储之间.
另一方面,Hibernate 不支持
开箱即用的版本控制
.
你建议我用什么?
我可以在某种程度上结合这两个框架吗?
如果可能的话,你能否总结一下这两个框架的优缺点?
谢谢!
编辑
我真的想要使用一些不需要我处理将对象映射到表格和背面的东西.我为什么要?我们住在哪个世纪?;)
我对JAXB有很好的经验(将对象映射到XML并以面向对象的方式返回),但JAXB在数据库中没有用处.
我真的找不到使用 javax.script实现自己的脚本语言的好例子...
我需要一些东西才能开始.
注1:我真的不是在谈论的javascript;)
注2:我并不需要的例子,如何利用现有的实现,我想实现一个自己的语言.
谢谢.