先来张效果图
这个demo用到了一个商业组件库,虽然是商业的,但是可以申请试用,还是值得学习的,哈哈,本文最后会附上申请地址
全部代码如下
package mydemo;
import javax.swing.*;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverConst;
import twaver.chart.LineChart;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.TimerTask;
public class MemoryMonitor extends JPanel {
TDataBox box=new TDataBox();
LineChart lineChart=new LineChart(box);
public MemoryMonitor(){
this.setLayout(new BorderLayout());
this.add(lineChart,BorderLayout.CENTER);
final Node memory=new Node();
memory.putChartStroke(TWaverConst.STROKE_SOLID_2);
memory.putChartColor(new Color(255,255,0,255));
box.addElement(memory);
final Runtime rt = Runtime.getRuntime();
lineChart.getLegendPane().setVisible(false);
lineChart.setFixedValueCount(20);
lineChart.setBackground(Color.BLACK);
lineChart.setBackgroundGradient(false);
lineChart.setBackgroundVisible(true);
lineChart.setBackgroundOutlineColor(new Color(46,139,87));
lineChart.setEnableXTranslate(false);
lineChart.setEnableYZoom(false);
lineChart.setLowerLimit(0);
lineChart.setXScaleLineVisible(true);
lineChart.setYScaleTextVisible(true);
lineChart.setYScaleTextColor(Color.green);
lineChart.setXScaleLineStroke(TWaverConst.STROKE_SOLID_1);
lineChart.setYScaleLineStroke(TWaverConst.STROKE_SOLID_1);
lineChart.setXScaleLineColor(new Color(46,139,87));
lineChart.setYScaleLineColor(new Color(46,139,87));
lineChart.setYAxisVisible(false);
lineChart.setXAxisVisible(false);
lineChart.setLineType(TWaverConst.LINE_TYPE_DEFAULT);
lineChart.setYScaleValueGap(2);
lineChart.setInterruptedWhenNullValue(true);
lineChart.setYAxisTextColor(Color.green);
lineChart.setXAxisFillColor(Color.yellow);
lineChart.setForeground(Color.green);
for(int i=0;i<19;i++){
memory.addChartValue(null);
}
Timer t=new Timer(1000,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
long total = rt.totalMemory();
lineChart.setYAxisText("Total:"+(total/1024/1024)+"M");
lineChart.setUpperLimit(total/1024/1024);
memory.addChartValue((rt.totalMemory()-rt.freeMemory())/1024/1024);
lineChart.setTitle("Used:"+((rt.totalMemory()-rt.freeMemory())/1024/1024)+"M");
}
});
t.start();
java.util.Timer timer=new java.util.Timer(true);
timer.schedule(new TimerTask() {
@Override
public void run() {
for(int i=0;i<80000;i++){
System.out.println();
}
}
}, 0,1000);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setContentPane(new MemoryMonitor());
frame.setVisible(true);
}
});
}
}
这个demo使用了一个名叫LineChart的图表控件,比较方便的地方是不用自己写2D代码绘制了,在对象上设置各种属性就可以(对于我这种喜欢偷懒的人来说真是福音啊)。
简单的介绍下LineChart的属性
setY/XAxis.... 用来设置坐标轴的相关属性
setY/XScale... 用来设置刻度的相关属性
属性太多不一一解释了,有兴趣的同学可以自行查看API
组件库的申请地址:http://www.servasoftware.com/ch/twaver.php?p_id=99
- 大小: 15.6 KB
分享到:
相关推荐
Swing Explorer通过JMX(Java Management Extensions)和Java代理技术来实现对Swing应用程序的动态监控。它在运行时附加到目标Swing应用上,通过反射获取组件信息,并将其展示在图形用户界面上。这种动态附着的方式...
6. **性能分析**:通过对组件的绘制时间和内存占用进行监控,开发者可以发现潜在的性能瓶颈,优化应用程序的运行效率。 7. **可扩展性**:Swing Explorer通常支持自定义插件,这意味着开发者可以根据需求添加新的...
开发者可能使用JProfiler或VisualVM等工具监控内存、CPU使用情况,优化代码性能。 这个项目为学习Java GUI编程和游戏开发的初学者提供了宝贵的参考,通过阅读和分析源代码,可以深入了解如何用Java实现复杂的游戏...
在内存中画图往往与GUI编程结合,例如使用Qt、wxWidgets或Java的Swing/AWT库。这些库提供图形控件和事件处理机制,使得可以响应用户的输入并在内存中更新图像。 4. **图像处理**:内存中的画图还涉及图像处理技术,...
7. **内存监控**: - 虽然标题中未明确提及,但程序名为"MemoryMonitor",可能还包含了内存使用情况的监控。这部分可能使用`MemoryMXBean`来获取堆内存、非堆内存等信息,并在图形界面上显示。 通过学习和应用这些...
JConsole是Java的性能监控工具,通过它开发者可以实时监控Java应用程序的内存、线程、类加载等信息。Freetype的集成使得JConsole在展示这些监控数据时,能够提供清晰、专业的字体显示,帮助开发者更准确地理解和分析...
3. 用户反馈:监控用户反馈,分析性能瓶颈,针对性地进行优化。 总之,Java动画编程优化需要综合考虑多个因素,从代码编写到框架选择,再到硬件资源的充分利用,每一步都对最终的动画效果和用户体验产生深远影响。...
在这个云资源调度系统中,用户可以通过Swing界面提交任务,监控资源分配情况,以及查看调度结果。 此外,项目的实现结构采用客户端-服务器(Client-Server,CS)架构。在这种架构下,客户端负责用户的交互,而...
在Java中,我们可以使用`java.awt.image.BufferedImage`类以及`ColorModel`和`Raster`对象来操作像素值,实现图像过滤效果。 6. `TileImage.java` - 这个名字暗示了一个功能,可能是将大图切割成小块或者拼接多个小...
9. **性能监控与调优**:开发者需要使用如JVisualVM等工具来监控线程状态,分析CPU和内存使用,以便优化并发程序的性能。 综上所述,这个“模拟多进程并发”的项目不仅涵盖了Java的并发编程,还涉及到了Swing的GUI...
"精简 jre 效果程序"这个主题指的是对标准的JRE进行优化和裁剪,以减少其体积,提高运行效率或适应特定的系统需求。 1. **JRE组成部分**: JRE主要由以下几个部分组成: - Java虚拟机(JVM):负责解释并执行Java...
1. **Swing UI组件增强**: JDK 1.6对Swing组件进行了更新,增加了许多新特性和改进,如JTable的性能提升,以及更丰富的用户界面效果。 2. **国际化和本地化支持**: 对于中文环境,JDK 1.6提供了更好的本地化支持,...
这些核心指标对于个人用户了解自己的微信使用习惯,以及企业监控营销活动的效果都具有实际意义。通过Java编程语言实现,确保了工具的跨平台性,使得无论在Windows、Mac还是Linux环境下,都能轻松运行。 【详细知识...
Java的`ImageIcon`类可以加载和显示这些资源,而高效地管理内存和资源释放是保证程序稳定运行的关键。 通过以上技术的结合,"经典鱼屏保"成功地创建了一个互动性强、视觉效果生动的屏保程序,为用户带来了轻松愉快...
1. 使用软引用:为了避免内存溢出,可以使用软引用(SoftReference)存储图像,当系统内存紧张时,垃圾回收器会自动清理这些引用的对象。 2. 位图缓存:对于大量重复使用的图像,可以考虑将其缓存为位图,以减少...
`MemoryMonitor.java`和`PerformanceMonitor.java`可能分别用于监控内存使用情况和程序性能,这对于理解和优化Java2D应用的资源消耗非常重要。 `TextureChooser.java`可能是用于选择和管理纹理的类,Java2D支持纹理...
2. **增强的Swing组件**:Swing库在JDK1.6中得到了加强,提供了更多的UI组件和更好的外观效果,同时增强了可访问性和国际化支持。 3. **NIO.2**:JDK1.6引入了New I/O API(NIO.2),扩展了Java的I/O功能,提供了...
2. **改进的Swing组件**:JDK 6对Swing UI库进行了优化,增加了新的组件和功能,比如JLayer,用于实现自定义的UI效果和高级组件行为。 3. **动态代理增强**:Java动态代理机制在JDK 6中得到增强,允许创建接口的...
- **JConsole**:提供了一个图形化的监控工具,可以监控Java应用的性能和内存使用情况。 - **JMX(Java Management Extensions)**:增强了管理扩展,方便远程管理和监控Java应用。 这些只是J2SE 1.6中部分关键...
- **内存分析**:监测对象分配,识别内存泄漏,提供详细的内存快照对比,以帮助优化内存使用。 - **线程分析**:查看和分析线程状态,找出死锁和阻塞问题。 - **GUI性能分析**:评估Swing和JavaFX应用程序的用户界面...