小编Hei*_*bug的帖子

如何查找生成DocumentEvent的源组件

是否有可能发现哪个项目生成了DocumentEvent?像我可以用ActionListener做的事情:

JTextField field = new JTextField("");
field.addActionListener(actionListener);

//inside ActionListener
public void actionPerformed(ActionEvent arg0) {
  if (arg0.getSource() instanceof JTextField) //true

}
Run Code Online (Sandbox Code Playgroud)

我想对DocumentEvent做同样的事情,但似乎不会以同样的方式工作:

JTextField field = new JTextField("");
field.getDocument.addDocumentListener(documentListener);
//inside documentListener
public void insertUpdate(DocumentEvent){
  if (arg0.getSource() instanceof JTextField) //false: class is javax.swing.text.PlainDocument
  if (arg0.getSource() instanceof MyComponent){
      MyComponent comp = (MyComponent)arg0.getSource();
      comp.callSpecificMethodUponMyComp(); 
  }
}
Run Code Online (Sandbox Code Playgroud)

答案者应该考虑以下几点:

  1. 为了我的目的,知道生成事件的对象类型是不够的,但我需要在运行时引用它.
  2. 通常,事件是从swing对象的扩展(myComp public JTextField)生成的.这些对象存储应在运行时在侦听器方法内检索的其他信息(例如,insertUpdate)
  3. DocumentListener是从一个不知道生成事件的字段的类实现的.不同类型的差异字段可以在运行时附加到侦听器.

java swing document properties jtextfield

15
推荐指数
1
解决办法
8428
查看次数

jfilechooser - 将目录设置为文件中的路径

我试图通过这样的东西(使用commons-io)在JFilechooser中设置目录路径:

String fileContents = IOUtils.toString(new FileInputStream("path.txt"));
File theDirectory = new File(fileContents);

filechooser = new JFileChooser();
fileChooser.setCurrentDirectory(theDirectory);
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
Run Code Online (Sandbox Code Playgroud)

我正在使用getCanonicalPath()来获取路径并写入文件path.txt

path = file.getCanonicalPath();
Run Code Online (Sandbox Code Playgroud)

我不打算把我的所有代码放在这里,但我确信程序会在path.txt中写入和读取路径.我没有收到任何错误,但每次运行程序时,它总是在我的文件夹中打开JFilechooser.我做错了什么?

java swing jfilechooser

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

sscanf被认为是安全的吗?

我对那些sscanf糟糕的建议有着模糊的回忆.我知道如果我使用字段宽度说明符,它不会溢出缓冲区,所以我的记忆只是在玩弄技巧吗?

c security scanf buffer-overflow

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

如何在F#中的类型声明中声明一个列表

我从几天开始学习F#,所以这是一个新手问题:

我已经学会了这种方式声明一种新类型:

type GameEntity = 
    {
        Position : Vector3<m>
        Velocity : Vector3<m/s>
        Acceleration : Vector3<m/s^2>
    }
Run Code Online (Sandbox Code Playgroud)

(Vector3和Meausure在其他地方宣布..这很好用).现在我想声明另一种在其中存储GameEntity列表的类型.我试过这样的事情:

type GameWorld = 
    {
        name : string;
        entities : GameEntity = []   //error
    }
Run Code Online (Sandbox Code Playgroud)

有人能告诉我正确的语法来声明以前定义的类型(GameEntity)的列表(实体)吗?

f# list

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

GPLv2是否与iOS App Store和Android Market兼容?

我从来没有写过iphone/android应用程序.这些天我打算帮朋友这样做.

该应用程序是一种电子书:一个简单的应用程序,用手机浏览我朋友的受版权保护的书的内容.我想知道尽可能少花时间.应用程序逻辑非常简单,大部分工作都涉及内容和图形.但我需要的是,Android和iPhone平台的应用程序的外观和感觉都是一样的.

为了实现这些目标(快速编写并在不同的操作系统上分享外观)我正在考虑使用GPL 2.0许可库.为此,我必须尊重GPL许可和我朋友的书籍和相关图像的版权.所以我想知道两件事:

  1. 使用与Android和iphone市场兼容的GPL 2.0库编写的应用程序是什么?我可以在这些市场上出售吗?

  2. 我知道,如果我使用GPL 2.0许可软件,我也必须发布我的应用程序源代码(当然,我会这样做).但内容呢?他们必须免费发布吗?我的意思是,我可以将我的GPL 2.0应用程序放在那些商店(在某个地方发布代码,比如我的网站),同时保持图书的内容和图像专有且仅可通过市场购买应用程序吗?

提前致谢

iphone android gpl app-store google-play

12
推荐指数
0
解决办法
3380
查看次数

Java中的对象变量与类变量

我正在学习Java,我不理解对象变量和类变量之间的区别.我所知道的是,为了使它成为一个类变量,你必须先用静态语句声明它.谢谢!

java oop variables static object

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

Bezier Cubic Curves:以均匀的加速度移动

假设我有一个贝塞尔曲线 B(u),如果我u以恒定速率增加参数,我不会沿着曲线获得恒定的速度运动,因为u参数和评估曲线的点之间的关系不是线性的.

我已阅读并实施了David Eberly的文章.它解释了如何沿参数曲线以恒定速度移动.

假设我有一个函数F(t),它将时间值t和速度函数作为输入,在时间sigma返回速度值t,我可以获得沿曲线的恒定速度运动,以恒定速率改变t参数:B(F(t))

我正在使用的文章的核心是以下功能:

float umin, umax; // The curve parameter interval [umin,umax].
Point Y (float u); // The position Y(u), umin <= u <= umax.
Point DY (float u); // The derivative dY(u)/du, umin <= u <= umax.
float LengthDY (float u) { return Length(DY(u)); }
float ArcLength (float t) { return Integral(umin,u,LengthDY()); }
float L = ArcLength(umax); // The …
Run Code Online (Sandbox Code Playgroud)

3d bezier numerical-methods runge-kutta

12
推荐指数
1
解决办法
2391
查看次数

Unity3D:优化垃圾收集

Unity3D Profiler为我提供了主要关于垃圾收集的峰值.在下面的截图中,三个红色尖峰代表我在游戏中的三个档位.这些摊位中的每一个都是100 + ms,大部分时间都花在了上面TrackDependencies.

根据Unity指令,我尝试将其添加到我的代码中:

if (Time.frameCount % 30 == 0)
{
    System.GC.Collect();
}
Run Code Online (Sandbox Code Playgroud)

这没有用.我仍然有尖峰,他们仍然需要100 + ms.到底发生了什么,我该怎么做才能优化我的游戏?

PS:

GameObject在游戏中动态创建并摧毁了很多s.这可能是个问题吗?

我在循环或数组中没有字符串连接作为返回值,如帖子中所述.

探查

optimization garbage-collection memory-management unity-game-engine

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

电脑是如何绘制屏幕的?

计算机如何在最低级别向屏幕绘制任何内容(没有关于外部库,如X11)?是否应该有汇编命令来执行此操作?CPU如何控制屏幕上显示的内容?

cpu assembly screen low-level graphic

11
推荐指数
2
解决办法
2428
查看次数

在JSplitPane上设置分隔符位置不起作用

我正在尝试设置JSplitPane的分隔符位置,但似乎无法正常工作.

这是一个SSCCE:

import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;


public class JSplitProblem extends JFrame {

    public JSplitProblem(){
        JPanel upperPanel = new JPanel();
        upperPanel.setLayout(new BoxLayout(upperPanel, BoxLayout.X_AXIS));

        JPanel leftPanel = new JPanel();

        leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
        JPanel red = new JPanel();
        red.setBackground(Color.red);
        leftPanel.add(red);

        JPanel rightPanel = new JPanel();
        rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
        JPanel blue = new JPanel();
        blue.setBackground(Color.blue);
        rightPanel.add(blue);

        upperPanel.add(leftPanel);
        upperPanel.add(rightPanel);
        JPanel bottomPanel = new JPanel();
        bottomPanel.setBackground(Color.black);

        JSplitPane mainSplittedPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upperPanel,bottomPanel);
        mainSplittedPane.setOneTouchExpandable(true);
        mainSplittedPane.setDividerLocation(0.5);

        this.add(mainSplittedPane);
        this.setSize(800,600);
        this.setResizable(true);
        this.setVisible(true);
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

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