how2j.cn

下载区
文件名 文件大小
请先登录 2m
增值内容 2m
2m

8分51秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器

步骤 1 : SpendPage   
步骤 2 : SpendService   
步骤 3 : SpendPanel   
步骤 4 : 运行效果   

增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package gui.page; public class SpendPage { //本月消费 public String monthSpend; //今日消费 public String todaySpend; //日均消费 public String avgSpendPerDay; //本月剩余 public String monthAvailable; //日均可用 public String dayAvgAvailable; //距离月末 public String monthLeftDay; //使用比例 public int usagePercentage; //是否超支 public boolean isOverSpend = false; public SpendPage(int monthSpend, int todaySpend, int avgSpendPerDay, int monthAvailable, int dayAvgAvailable, int monthLeftDay, int usagePercentage) { this.monthSpend = "¥" + monthSpend; this.todaySpend = "¥" + todaySpend; this.avgSpendPerDay = "¥" + avgSpendPerDay; if (monthAvailable < 0) isOverSpend = true; if (!isOverSpend) { this.monthAvailable = "¥" + monthAvailable; this.dayAvgAvailable = "¥" + dayAvgAvailable; } else { this.monthAvailable = "超支" + (0 - monthAvailable); this.dayAvgAvailable = "¥0"; } this.monthLeftDay = monthLeftDay + "天"; this.usagePercentage = usagePercentage; } }
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package service; import java.util.List; import dao.RecordDAO; import entity.Record; import gui.page.SpendPage; import util.DateUtil; public class SpendService { public SpendPage getSpendPage() { RecordDAO dao = new RecordDAO(); // 本月数据 List<Record> thisMonthRecords = dao.listThisMonth(); // 今日数据 List<Record> toDayRecords = dao.listToday(); // 本月总天数 int thisMonthTotalDay = DateUtil.thisMonthTotalDay(); int monthSpend = 0; int todaySpend = 0; int avgSpendPerDay = 0; int monthAvailable = 0; int dayAvgAvailable = 0; int monthLeftDay = 0; int usagePercentage = 0; // 预算 int monthBudget = new ConfigService().getIntBudget(); // 统计本月消费 for (Record record : thisMonthRecords) { monthSpend += record.getSpend(); } // 统计今日消费 for (Record record : toDayRecords) { todaySpend += record.getSpend(); } // 计算日均消费 avgSpendPerDay = monthSpend / thisMonthTotalDay; // 计算本月剩余 monthAvailable = monthBudget - monthSpend; // 距离月末 monthLeftDay = DateUtil.thisMonthLeftDay(); // 计算日均可用 dayAvgAvailable = monthAvailable / monthLeftDay; // 计算使用比例 usagePercentage = monthSpend * 100 / monthBudget; // 根据这些信息,生成SpendPage对象 return new SpendPage(monthSpend, todaySpend, avgSpendPerDay, monthAvailable, dayAvgAvailable, monthLeftDay, usagePercentage); } }
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
SpendPanel
package gui.panel; import static util.GUIUtil.setColor; import static util.GUIUtil.showPanel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.GridLayout; import javax.swing.JLabel; import javax.swing.JPanel; import gui.page.SpendPage; import service.SpendService; import util.CircleProgressBar; import util.ColorUtil; public class SpendPanel extends WorkingPanel { public static SpendPanel instance = new SpendPanel(); JLabel lMonthSpend = new JLabel("本月消费"); JLabel lTodaySpend = new JLabel("今日消费"); JLabel lAvgSpendPerDay = new JLabel("日均消费"); JLabel lMonthLeft = new JLabel("本月剩余"); JLabel lDayAvgAvailable = new JLabel("日均可用"); JLabel lMonthLeftDay = new JLabel("距离月末"); JLabel vMonthSpend = new JLabel("¥2300"); JLabel vTodaySpend = new JLabel("¥25"); JLabel vAvgSpendPerDay = new JLabel("¥120"); JLabel vMonthAvailable = new JLabel("¥2084"); JLabel vDayAvgAvailable = new JLabel("¥389"); JLabel vMonthLeftDay = new JLabel("15天"); CircleProgressBar bar; public SpendPanel() { this.setLayout(new BorderLayout()); bar = new CircleProgressBar(); bar.setBackgroundColor(ColorUtil.blueColor); setColor(ColorUtil.grayColor, lMonthSpend, lTodaySpend, lAvgSpendPerDay, lMonthLeft, lDayAvgAvailable, lMonthLeftDay, vAvgSpendPerDay, vMonthAvailable, vDayAvgAvailable, vMonthLeftDay); setColor(ColorUtil.blueColor, vMonthSpend, vTodaySpend); vMonthSpend.setFont(new Font("微软雅黑", Font.BOLD, 23)); vTodaySpend.setFont(new Font("微软雅黑", Font.BOLD, 23)); this.add(center(), BorderLayout.CENTER); this.add(south(), BorderLayout.SOUTH); } private JPanel center() { JPanel p = new JPanel(); p.setLayout(new BorderLayout()); p.add(west(), BorderLayout.WEST); p.add(east()); return p; } private Component east() { return bar; } private Component west() { JPanel p = new JPanel(); p.setLayout(new GridLayout(4, 1)); p.add(lMonthSpend); p.add(vMonthSpend); p.add(lTodaySpend); p.add(vTodaySpend); return p; } private JPanel south() { JPanel p = new JPanel(); p.setLayout(new GridLayout(2, 4)); p.add(lAvgSpendPerDay); p.add(lMonthLeft); p.add(lDayAvgAvailable); p.add(lMonthLeftDay); p.add(vAvgSpendPerDay); p.add(vMonthAvailable); p.add(vDayAvgAvailable); p.add(vMonthLeftDay); return p; } public static void main(String[] args) { showPanel(SpendPanel.instance); } @Override public void updateData() { SpendPage spend = new SpendService().getSpendPage(); vMonthSpend.setText(spend.monthSpend); vTodaySpend.setText(spend.todaySpend); vAvgSpendPerDay.setText(spend.avgSpendPerDay); vMonthAvailable.setText(spend.monthAvailable); vDayAvgAvailable.setText(spend.dayAvgAvailable); vMonthLeftDay.setText(spend.monthLeftDay); bar.setProgress(spend.usagePercentage); if (spend.isOverSpend) { vMonthAvailable.setForeground(ColorUtil.warningColor); vMonthSpend.setForeground(ColorUtil.warningColor); vTodaySpend.setForeground(ColorUtil.warningColor); } else { vMonthAvailable.setForeground(ColorUtil.grayColor); vMonthSpend.setForeground(ColorUtil.blueColor); vTodaySpend.setForeground(ColorUtil.blueColor); } bar.setForegroundColor(ColorUtil.getByPercentage(spend.usagePercentage)); addListener(); } @Override public void addListener() { // TODO Auto-generated method stub } }
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
运行效果


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2020-05-16 !!!!!!!!!!!!!
莱维贝贝




请问这是因为什么?

							
"C:\Program Files\Java\jdk-13\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=56190:E:\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Administrator\Desktop\jh\文档源码\项目\javase\out\production\myideaproject;E:\mysql-connector-java-5.1.47\mysql-connector-java-5.1.47\mysql-connector-java-5.1.47-bin.jar;C:\Users\Administrator\.IntelliJIdea2019.3\config\javascript\extLibs\http_code.jquery.com_jquery-3.3.1.js;C:\Users\Administrator\.IntelliJIdea2019.3\config\javascript\extLibs\http_cdn.jsdelivr.net_npm_vue_dist_vue.js;E:\FIREFOX\liquidlnf.jar;E:\FIREFOX\chart.jar;E:\FIREFOX\swingx-core-1.6.2.jar how2jproject.startup.Bootstrap
Exception in thread "main" java.lang.reflect.InvocationTargetException
	at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1367)
	at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1342)
	at java.desktop/javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1480)
	at how2jproject.startup.Bootstrap.main(Bootstrap.java:13)
Caused by: java.lang.ArithmeticException: / by zero
	at how2jproject.service.SpendService.getSpendPage(SpendService.java:53)
	at how2jproject.gui.panel.SpendPanel.updateData(SpendPanel.java:96)
	at how2jproject.util.CenterPanel.show(CenterPanel.java:48)
	at how2jproject.startup.Bootstrap$1.run(Bootstrap.java:17)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:303)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Process finished with exit code 0


1 个答案

how2j
答案时间:2020-05-20
你的 SpendService.java:53 53行,除数是0导致的。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-06-21 完犊子,界面不见了
11111111111111111




我咋见老师的SpendPanel代码里 有个 east()方法了?? 这是哪里的。。。前面不是只有west south center center2么? 这个异常似乎提示应该是 说数字类型转换出错了。。。。就
package gui.panel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.GridLayout;

/**
 * 单例模式
 * 直接声明一个SpendPanel类型的静态属性,并指向当前实例
 */
import javax.swing.JLabel;
import javax.swing.JPanel;

import gui.page.SpendPage;
import service.SpendService;
import util.CircleProgressBar;
import util.ColorUtil;
import util.GUIUtil;

public class SpendPanel extends WorkingPanel{
	static {
		GUIUtil.useLNF();
	}
	
	public static SpendPanel instance = new SpendPanel();
	
	public JLabel lMonthSpend = new JLabel("本月消费");
	public JLabel lTodaySpend = new JLabel("今日消费");
	public JLabel lAvgSpendPerDay = new JLabel("日均消费");
	public JLabel lMonthLeft = new JLabel("本月剩余");
	public JLabel lDayAvgAvailable = new JLabel("日均可用");
	public JLabel lMonthLeftDay = new JLabel("距离月末");
	 
	public JLabel vMonthSpend = new JLabel("¥2300");
	public JLabel vTodaySpend = new JLabel("¥25");
	public JLabel vAvgSpendPerDay = new JLabel("¥120");
	public JLabel vMonthAvailable = new JLabel("¥2084");
	public JLabel vDayAvgAvailable = new JLabel("¥389");
	public JLabel vMonthLeftDay = new JLabel("15天");
		
	CircleProgressBar bar;
	
	public SpendPanel() {
		this.setLayout(new BorderLayout());
		bar = new CircleProgressBar();
		bar.setBackgroundColor(ColorUtil.blueColor);
		
		GUIUtil.setColor(ColorUtil.grayColor,lMonthSpend,lTodaySpend,lAvgSpendPerDay,lMonthLeft
				,lDayAvgAvailable,lMonthLeftDay,vAvgSpendPerDay,
				vMonthAvailable,vDayAvgAvailable,vMonthLeftDay);
		GUIUtil.setColor(ColorUtil.blueColor,vMonthSpend,vTodaySpend);
		
		vMonthSpend.setFont(new Font("微软雅黑",Font.BOLD,23));
		vTodaySpend.setFont(new Font("微软雅黑",Font.BOLD,23));
		
		this.add(center(),BorderLayout.CENTER);
		this.add(south(),BorderLayout.SOUTH);
	}
	
	public JPanel center() {
		JPanel p = new JPanel();
		p.setLayout(new BorderLayout());
		p.add(west(),BorderLayout.WEST);
		p.add(center2(),BorderLayout.CENTER);
		
		return p;
	}
	
	private Component center2() {
		// TODO Auto-generated method stub
		return bar;
	}
	
	//南边
	public JPanel south() {
		JPanel p = new JPanel();
		p.setLayout(new GridLayout(2,4));//2行4列
		
		p.add(lAvgSpendPerDay);
		p.add(lMonthLeft);
		p.add(lDayAvgAvailable);
		p.add(lMonthLeftDay);
		p.add(vAvgSpendPerDay);
		p.add(vMonthAvailable);
		p.add(vDayAvgAvailable);
		p.add(vMonthLeftDay);
		
		return p;
	}


	//西边
	private Component west() {
		// TODO Auto-generated method stub
		JPanel p = new JPanel();
		p.setLayout(new GridLayout(4,1));//4行1列
		p.add(lMonthSpend);
		p.add(vMonthSpend);
		p.add(lTodaySpend);
		p.add(vTodaySpend);		
		return p;
	}
	
	public static void main(String[] args) {
		GUIUtil.showPanel(SpendPanel.instance);
	}

	@Override
	public void updateData() {
		// TODO Auto-generated method stub
		SpendPage spend = new SpendService().getSpendPage();
		vMonthSpend.setText(spend.monthSpend);
		vTodaySpend.setText(spend.todaySpend);
		vAvgSpendPerDay.setText(spend.avgSpendPerDay);
		vMonthAvailable.setText(spend.monthAvailiable);
		vDayAvgAvailable.setText(spend.dayAvgAvailiable);
		vMonthLeftDay.setText(spend.monthLeftDay);
		
		bar.setProgress(spend.useagePercentage);
		if(spend.isOverSpend) {
			vMonthAvailable.setForeground(ColorUtil.warningColor);
			vMonthSpend.setForeground(ColorUtil.warningColor);
			vTodaySpend.setForeground(ColorUtil.warningColor);			
		}else {
			vMonthAvailable.setForeground(ColorUtil.grayColor);
			vMonthSpend.setForeground(ColorUtil.blueColor);
			vTodaySpend.setForeground(ColorUtil.blueColor);			
		}
		bar.setForegroundColor(ColorUtil.getByPercentage(spend.useagePercentage));
		addListener();
	}

	@Override
	public void addListener() {
		// TODO Auto-generated method stub
		
	}
}
java.lang.reflect.InvocationTargetException
	at java.awt.EventQueue.invokeAndWait(EventQueue.java:1321)
	at java.awt.EventQueue.invokeAndWait(EventQueue.java:1296)
	at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
	at startup.Bootstrap.main(Bootstrap.java:20)
Caused by: java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:592)
	at java.lang.Integer.parseInt(Integer.java:615)
	at service.ConfigService.getIntBudget(ConfigService.java:44)
	at service.SpendService.getSpendPage(SpendService.java:30)
	at gui.panel.SpendPanel.updateData(SpendPanel.java:111)
	at util.CenterPanel.show(CenterPanel.java:66)
	at startup.Bootstrap$1.run(Bootstrap.java:25)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPri


2 个答案

how2j
答案时间:2019-06-23
恭喜你,又是自己找出问题所在啦,成长啦

11111111111111111
答案时间:2019-06-22
好吧,关键在于 页面上 的本月预算 那个 功能依赖性很重要 ,走错一不,步步错!!!!



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-03-20 关于日均消费
2019-03-19 这里运行出现错误。。代码都是一样。不知道哪里错误了
2019-02-27 这里站长提供的hutubill好像因为预算是0所以运行的时候会出错,建议大家运行出错时把预算改成非零就好了


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 5 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-一本糊涂账-消费一览 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图