小编Dav*_*lle的帖子

Java Swing:鼠标悬停在JComboBox项目上的文本?

在Swing中,有没有办法为JComboBox中的每个项目定义鼠标悬停文本(或工具提示文本)?

java swing

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

如何用Java开发多点触控应用程序?

预计多点触控界面变得越来越普遍的日子,Java中的库是否可以用于开发触摸应用程序?我正在寻找类似于MouseListener/MouseMotionListener/MouseWheelListener的接口.

java multi-touch touch

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

寻找一个简单的Java API来创建图形(边缘+节点)

我正在尝试找到一个简单的Java API来创建图形关系.它应该有一些功能,例如addEdge(),addNode(),isConnected(node1, node2),findPaths(node1, node2),等我不需要UI,只是逻辑.

我发现了一堆学术项目,但似乎都没有" The Definitive Graph API ".

有谁知道这样的API?

java api graph-theory

18
推荐指数
1
解决办法
3万
查看次数

如何将元素添加到通配符通用集合中?

为什么我用这个Java代码会出现编译器错误?

1  public List<? extends Foo> getFoos()
2  {
3    List<? extends Foo> foos = new ArrayList<? extends Foo>();
4    foos.add(new SubFoo());
5    return foos;
6  }
Run Code Online (Sandbox Code Playgroud)

其中'SubFoo'是实现Foo的具体类,而Foo是一个接口.

我用这段代码得到的错误:

  • 在第3行:"无法实例化ArrayList <?extends Foo>"
  • 在第4行:"方法添加(捕获#1-of?extends Foo)在类型List <capture#1-of?extends Foo>中不适用于参数(SubFoo)"

更新:感谢Jeff C,我可以更改第3行来说"new ArrayList <Foo>();".但我仍然遇到第4行的问题.

java generics

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

如何创建JavaScript"自己动手"编辑器

我知道有很多"自己动手"的JavaScript编辑器,比如W3School的Try It编辑器,JSBinJSFiddle.

我正在开发一个图形化的JavaScript库,我想让人们从我自己的网站上试用(与其他编辑器的一个区别是我的输出是画布,而不是HTML框架).不想重新发明轮子,是否已经建立了创建"自己动手"功能的方法,可以考虑基于DOM的脚本漏洞等问题?

javascript

16
推荐指数
1
解决办法
9955
查看次数

如何在Java中生成声音效果?

我正在寻找可用于在运行时生成声音的Java代码 - 不播放现有的声音文件.

例如,在440 Hz持续2毫秒产生锯齿波形的最佳代码是什么?源代码赞赏!

我记得我的Commodore 128有一个简单的声音命令,它将声音,频率,波形和持续时间作为参数来定义声音.这在很多简单的案例(快速和肮脏的游戏,声音实验等)中都很有用.

我正在寻找特殊的声音效果,如声音,而不是音乐或MIDI(JFugue图书馆非常清楚).

java audio

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

何时使用EventListenerList而不是一般的侦听器集合

当我学习如何在Java中激活事件时,我熟悉了EventListenerList.当我创建自己的侦听器时,我编写了侦听器,因此它扩展了EventListener,我将它们存储在EventListenerList中,我的fire方法将通过这样的事件侦听器:

protected void fireChangeOccurred(Change change) {
    Object[] listeners = listenerList.getListenerList();
    for (int i = listeners.length-2; i>=0; i-=2) {
        if (listeners[i]==ChangeListener.class) {
            ((ChangeListener)listeners[i+1]).changeOccurred(change);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在查看只是将侦听器放入HashMap(可能是任何集合)的代码,侦听器接口不会扩展EventListener,而fire方法如下所示:

protected void fireChangeOccurred(Change change) {
    for (ChangeListener listener : listeners) {
        listener.changeOccurred(change);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用EventListenerList而不仅仅是维护我自己的侦听器列表有什么好处?只有侦听器在Swing组件中才真正重要 - 对于事件调度线程是否重要?

java events swing

13
推荐指数
2
解决办法
5665
查看次数

Swing组件的开源改进或替换

我使用Swing开发了许多桌面Java应用程序,虽然Swing非常强大(一旦你掌握了它),仍然有很多情况我希望一些高级组件可以直接使用.

例如,我真的很想看到易于使用的组件(没有自己编写,我可以给予足够的时间),如:

  • 多线标签
  • Windows文件浏览器类图标或缩略图视图
  • 下拉按钮(如Firefox的旧后退按钮)
  • 五星评级小工具
  • 具有自动历史记录的组合框(如Google上的文本字段)
  • 一款Outlook风格的手风琴式酒吧
  • 等等

我知道有几个免费Swing组件的来源,比如SwingLabs,JXTable的主页,JXDatePicker和其他几个.

除了Java本身之外,你在哪里选择Swing组件?

java swing components

10
推荐指数
1
解决办法
2615
查看次数

简单的Java MIDI示例不产生任何声音

这个简单的代码不会在我用来测试它的几台机器上产生任何声音.我正在运行Eclipse中的代码,但我也尝试使用命令行无济于事.

public static void main(String[] args)
{
    try {
        Synthesizer synthesizer = MidiSystem.getSynthesizer();
        synthesizer.open();

        MidiChannel[] channels = synthesizer.getChannels();

        channels[0].noteOn(60, 60);
        Thread.sleep(200);
        channels[0].noteOff(60);

        synthesizer.close();
    } catch (Exception e)
    {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

通过获取音序器,将MIDI事件添加到序列并播放序列,我能够成功获得声音,但我正在尝试做一些实时音乐效果,音序器不支持.

有任何想法吗?

编辑解决方案:事实证明问题在于,默认情况下,JRE没有声音库(有趣的是,使用Sequencer工作,但使用合成器没有).谢谢,thejmc!

为了解决这个问题,我从java.sun.com下载了一个soundbank并将其放入(在WinXP上)C:\ Program Files\jre1.6.0_07\lib\audio(必须制作音频文件夹).

java midi

10
推荐指数
1
解决办法
8429
查看次数

遗留代码中的泛型

我们有相当多的代码只是跳转到Java 5.我们一直在那些针对Java 5版本发布的组件中使用泛型,但剩下的代码当然是充满原始的类型.我已经设置编译器为原始类型生成错误并开始手动清除它们,但是按照目前的速率,它需要长时间才能完成它(大约有2500个错误).这是Eclipse的有用的Infer Generic Type快速修复,它总是摆脱错误,但经常生成需要进一步工作的代码.

有没有更好的方法来处理这个?有没有比Eclipse更好的自动化工具?有没有办法将重构应用于所有出现而不是一个一个地进行重构?或者你只是忽略警告?

java migration generics legacy-code

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