how2j.cn


工具版本兼容问题
学习了这么多J2SE基础和中级的知识点,接下来就需要一个综合性的项目把这些的知识点都融会贯通

本项目是基于Swing和JDBC开发的图形界面桌面应用,涵盖了J2SE的绝大部分基础知识,通过这个项目能运用和锻炼几乎大部分的J2SE知识和技能。

涉及到如下内容:
基础内容:
面向对象 字符串数字 日期

中级内容:
异常 ,集合,JDBC, 反射机制,I/O,Swing, 利用TableModel更新数据, 图形界面的皮肤

高级内容:
图表chart动态生成,数据库的备份与恢复,自定义圆形进度条

软件设计思想:
单例模式,面板类与监听器类松耦合,Entity层设计,DAO层设计,Service层设计

业务常见处理手法:
CRUD操作,配置信息,配置信息初始化,报表生成,一对多关系,多对一关系

通过本项目,积累宝贵的项目经验,在面试的时候,多一项谈资多一层砝码多一些薪水



18分18秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)




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


最近10个提问
2019-09-21 Category c = r.getSelectedCategory();报错。
lj123456



Category c = r.getSelectedCategory();报错。r是RecordPanel实例,没有.getSelectedCategory()方法,但是我的代码的代码一样的,r里面就没有.getSelectedCategory()方法。
package gui.listener;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.swing.JOptionPane;

import entity.Category;
import entity.Record;
import gui.panel.CategoryPanel;
import gui.panel.MainPanel;
import gui.panel.RecordPanel;
import gui.panel.SpendPanel;
import service.RecordService;
import util.GUIUtil;

public class RecordListener implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {
		RecordService rs = new RecordService();
		RecordPanel r = RecordPanel.instance;
		if(0==r.ccbm.cs.size()) {
			JOptionPane.showMessageDialog(r, "请设置消费分类");
			GUIUtil.showPanel(CategoryPanel.instance);
			//MainPanel.instance.workingPanel.show(CategoryPanel.instance);
		}


        if(!GUIUtil.checkZero(r.tfSpend,"花费金额"))

            return;

        int spend = Integer.parseInt(r.tfSpend.getText());

        Category c = r.getSelectedCategory();

        String comment = r.tfComment.getText();

        Date d =r.date.getDate();

        new RecordService().submit(spend, c, comment, d);

        JOptionPane.showMessageDialog(r, "添加成功");

         

        MainPanel.instance.workingPanel.show(SpendPanel.instance);
		
	}


}
Category c = r.getSelectedCategory();


1 个答案

how2j 答案时间:2019-09-21
看看右上角我的代码可运行项目里有没有这行代码呢 :getSelectedCategory



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





2019-09-18 panel界面的设置已经怎么设置默认设置,hgap和vgap 的数字含义,源码看不太懂而且我改变数字对界面没有明显变化。
lj123456



界面跟老师不同,老师也没有设置Panel的size和location但是看这个舒服,我这个有点奇怪,怎么让系统默认设置 还有就是GridLayot布局后面的hgap和vgap的数值的意思不太懂,看不懂源码
package gui.panel;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Panel;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;

import org.jdesktop.swingx.JXDatePicker;

import gui.model.CategoryComboBoxModel;
import util.ColorUtil;
import util.GUIUtil;

public class RecordPanel extends JPanel{
	static {
		GUIUtil.useLNF();
	}
	public static RecordPanel instance = new RecordPanel();
	public JLabel lSpend=new JLabel("花费(¥)");
	public JLabel lCategory=new JLabel("分类");
	public JLabel lComment=new JLabel("备注");
	public JLabel lDate=new JLabel("日期");
	public JTextField tfSpend=new JTextField("0");
	public CategoryComboBoxModel ccbm=new CategoryComboBoxModel();
	public JComboBox<String> cbCategory=new  JComboBox<>(ccbm);
	public JTextField tfComment=new JTextField();
    public JXDatePicker date=new JXDatePicker(new Date());
    public JButton bSubmit=new JButton("提交");
	public RecordPanel() {
		GUIUtil.setColor(ColorUtil.grayColor, lSpend,lCategory,lComment,lDate);
		GUIUtil.setColor(ColorUtil.blueColor, bSubmit);
		Panel pInput = new Panel();
		Panel pSubmit = new Panel();
		int gap=50;
		pInput.setLayout(new GridLayout(4, 2, gap, gap));
		pInput.add(lSpend);
		pInput.add(tfSpend);
		pInput.add(lCategory);
		pInput.add(cbCategory);
		pInput.add(lComment);
		pInput.add(tfComment);
		pInput.add(lDate);
		pInput.add(lDate);
		pInput.add(date);
		pSubmit.add(bSubmit);
		this.setLayout(new BorderLayout());
		this.add(pInput,BorderLayout.NORTH);
		this.add(pSubmit,BorderLayout.CENTER);
	}
	public static void main(String[] arg) {
		GUIUtil.showPanel(instance);
	}
    

}

							


1 个答案

how2j 答案时间:2019-09-19
这是 GridLayout 布局器,大小和位置由布局器决定。 布局器教程: http://how2j.cn/k/gui/gui-layerout/405.html gap 的意思就是左右和上下空隙,默认是0.



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





2019-09-17 有一段代码看不懂
2019-09-16 为什么运行出来当mysql输入框为空时会报错呀,下载了站长的rar包也是一样的。
2019-09-16 mysql安装路径不正确
2019-09-12 中文乱码
2019-09-10 语法问题
2019-09-09 jdk12下导入包后仍无法使用BarChart类
2019-09-05 可以发一下IDEA吗
2019-09-04 错误: 找不到或无法加载主类 gui.SavingPostionThread




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

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

上传截图