步骤 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项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
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公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2023-07-01
请问站长,updateData是在哪里调用的
2 个答案
二手玫瑰江小北 跳转到问题位置 答案时间:2023-07-02 找到了,原来在这里,麻了
if (p instanceof WorkingPanel)
((WorkingPanel) p).updateData();
二手玫瑰江小北 跳转到问题位置 答案时间:2023-07-01 搞了一个测试类,确实不用写调用也行,为啥呀
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-05-16
!!!!!!!!!!!!!
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-06-21
完犊子,界面不见了
2019-03-20
关于日均消费
2019-03-19
这里运行出现错误。。代码都是一样。不知道哪里错误了
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 6 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|