【发布时间】:2012-12-17 17:17:36
【问题描述】:
我在看 Randel Schofer 的屏幕录像机,我喜欢它的 GUI。我试图在不查看源代码的情况下自行设计一个。我知道这是最简单的方法,但我想自己解决问题。
我遇到了很多问题:
GradientPaint 可以做到这一点。我用它来填充矩形和圆形,但我如何将它用于JFrame? JFrame 内
run() 方法? public class ScreenRecorder extends JFrame{
protected class background extends JPanel{
@Override
public void paintComponent(Graphics g){
}
}
}
我仍然无法获得背景。请帮忙。
【问题讨论】:
-
确实,您可以通过覆盖
paintComponent然后使用GradientPaint来获取该背景。箭头也很可能是图像,但也可能是纯文本;无论哪种方式,它最有可能在JLabel上,并且标签可能有一个MouseListener来处理从点击点创建可能的JPopupMenu。至于打开“视频”文件夹,这是一个简单的Runtime.getRuntime().exec(..)类似explorer C:\somedir\somedir\Videos的命令。 -
@Vulcan 请对最后一个多说一点。我知道“视频”文件夹在 Windows 中有一个预定义的位置。我怎么知道我的程序在哪个操作系统上运行?然后,根据操作系统,必须设置位置:)
-
你的意思是,你想创建一个秒表?如果是这样,请使用摇摆计时器:docs.oracle.com/javase/tutorial/uiswing/misc/timer.html
-
Swing
Timer用于调度事件(例如每 30 毫秒捕获一次屏幕)。要确定经过的时间,请使用两个不同时间点的System.nanoTime()之间的差异。Timer可以用来追踪经过的时间,但没必要这么用。 -
看@sdasdadas 的回答。但是......小心那个计时器!当您启动它时,您还应该在退出应用程序之前停止它。因此,如果单击
JFrame上的关闭按钮,您应该创建一个窗口侦听器来停止它。您也可以通过在setDefaultCloseOperation()方法中将JFrame.EXIT_ON_CLOSE作为参数传递来暴力停止它..