TC1.6SourceCode java课程表
/**
* @version 2.0
* @author sharks
*/
/**
* Instruction
* this version will use IO
* apply file to store data
* it just a table double click table can edit the course
* */
import java.io.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.awt.*;
import java.awt.event.*;
/**
*Graphic
*7 JTalbe add to JScrollPane
*
* */
/**
* I should use cardlayout.there are seven days a week
* and ten classes one day(as Big class is five )
* so every day should take 5 rows and 3 columns (5,3)
*
* */
/**
* how to generate file
* first get info from table
* second when click button get info from table and write to file
* when opening this software read file from local
* when renew info must reload file
* */
class TC extends JFrame implements ActionListener,java.io.Serializable{ //Serializable this interface can write to file
private JButton[] btn = new JButton[10];
JScrollPane[] sp = new JScrollPane[7];
private CardLayout c = new CardLayout();
private JPanel p = new JPanel(c);
private JPanel pbottom = new JPanel();
private JMenuItem[] week = new JMenuItem[7];
private JMenuBar mb = new JMenuBar();
private JMenu[] jm = new JMenu[3];
//evert day has a Table ,so everyday generate a file ,so just give values
//seven panel respentsevent days for sunday
private JTable[] mt = new JTable[7];
String temp = null ;
int current = 0;
JMenuItem ul = null;
JMenuItem lk = null;
//table headers
String headers[] = {"When","Name","Teacher","Class"};
// table data
Object[][] cdata = new Object[5][4];
public void launch(){
//get previous
//Bottom Panel
btn[0] = new JButton("Pervious");
btn[1] = new JButton("Next");
btn[0].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
c.previous(p);
current = current-1;
if(current<0)current = 6;
try {
setData();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(current);
}});
btn[1].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
c.next(p);
current ++ ;
if(current>6)current=0;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(current);
}});
pbottom.add(btn[0]);
pbottom.add(btn[1]);
//setMenubar
jm[0] = new JMenu("Week ");
week[0] = new JMenuItem("Sun");
week[1] = new JMenuItem("Mon");
week[2] = new JMenuItem("Tue");
week[3] = new JMenuItem("Wed");
week[4] = new JMenuItem("Thu");
week[5] = new JMenuItem("Fri");
week[6] = new JMenuItem("Sat");
for(int i = 0 ;i<7 ;i++){
week[i].addActionListener(this);
jm[0].add(week[i]);
}
//lock table
jm[1] = new JMenu("Edit");
ul = new JMenuItem("UnLock");
lk = new JMenuItem("Lock ");
ul.addActionListener(this);
lk.addActionListener(this);
jm[1].add(ul);
jm[1].add(lk);
// load pamel
jm[2] = new JMenu("Help");
JMenuItem bl = new JMenuItem("MyBlog");
bl.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
String command = "explorer.exe http://www.cnblogs.com/oaks";
try {
Runtime.getRuntime().exec(command);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}});
JMenuItem he = new JMenuItem("Help");
he.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
/*
JPanel pp = new JPanel(new GridLayout(6,1,8,8));
pp.add(new JLabel("1.you can select menubar to loacte week"));
pp.add(new JLabel("2.double click table to edit this TableCourse"));
pp.add(new JLabel("3.when you make it up,you must use 'Lock'menuitem to store the data you inputed"));
pp.add(new JLabel("4.when the table is locked ,you can`t edit it ever until youclick 'UnLoak' menuitem"));
p.add(pp,"7");
c.show(p, "7");
*/
String command = "notepad e:/TC/help.txt";
try {
Runtime.getRuntime().exec(command);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}});
jm[2].add(bl);
jm[2].add(he);
//add three menus
for(int i = 0 ;i<3 ;i++){
mb.add(jm[i]);
}
/**
* help
*
* */
/**
* it display by values from object
* before every displaying read file to give values
* */
for(int i = 0 ;i<7;i++){
mt[i] = new JTable(cdata,headers);
mt[i].getTableHeader().setPreferredSize(new Dimension(100,40));
mt[i].setPreferredScrollableViewportSize(new Dimension(this.getWidth(),this.getHeight()));
mt[i].setRowHeight(50);
TableColumn column = null;
int colunms = mt[i].getColumnCount();
for(int j = 0; j < colunms; j++)
{
column = mt[i].getColumnModel().getColumn(j);
column.setPreferredWidth(150);
}
mt[i].setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
sp[i] = new JScrollPane(mt[i]);
//sp[i].setSize(500, 500);
// 0 == sunday
p.add(sp[i],i+"");
}
//set panel content
/**generate content
* week panel should have a common table but different values
* just in different give table item different values
* */
//add week panel to p[0] panel 1-8
//panel start with 1 represent Panel1 and 7 represent sunday
//at last it belongs panel
//add monday first ,so it display mon day ,the first panel num1
setTitle("TC1.6");
setBounds(400,180,600,386);
this.setJMenuBar(mb);
add(p,BorderLayout.CENTER);
setResizable(false);
add(pbottom,BorderLayout.SOUTH);
//this.pack();
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
setVisible(true);
//style on close this frame
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e){
//set events for week menu
for(int i = 0;i<7;i++){
pbottom.setVisible(true);
if(e.getSource().equals(week[i]))
switch(i){
case 0:
current = 0 ;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
c.show(p, "0");
// 0 == sunday
break;
case 1:
current = 1 ;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
c.show(p, "1");
break;
case 2:
current = 2;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
c.show(p, "2");
break;
case 3:
current = 3 ;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
c.show(p, "3");
break;
case 4:
current = 4 ;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
c.show(p, "4");
break;
case 5:
current = 5 ;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
c.show(p, "5");
break;
case 6:
current = 6 ;
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
c.show(p, "6");
break;
default:
System.out.println("Occur error on switch!");
}
}
//file store &&&&data read
/**
* lock means write file reload file and setEditable=No
* first I should know which panel is displaying
* so I should write a method to get Which panel is displaying
* */
if(e.getSource().equals(lk)){
String tmp = null ;
/*
for(int i = 0 ;i<5;i++){
for(int j = 0;j<4;j++){
temp = (String)mt[0].getValueAt(i, j);
System.out.println(temp);
if(temp==null){
temp = "n";
}
try {
dos.writeUTF(temp);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
try {
dos.flush();
fos.close();
dos.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
*/
String filename = null;
filename="e:/TC/week"+current+".dat";
File file = new File(filename);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
DataOutputStream dos = new DataOutputStream(fos);
for(int i = 0 ;i<mt[current].getRowCount();i++){
for(int j = 0;j<mt[current].getColumnCount();j++){
temp = (String)mt[current].getValueAt(i, j);
if(temp==null){
temp = "nl";
}
try {
dos.writeUTF(temp);
System.out.println(temp);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
try {
dos.flush();
fos.close();
dos.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
setData();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
mt[current].setEnabled(false);
this.setTitle("TC1.6---Locked");
}
//file read & data store
if(e.getSource().equals(ul)){
mt[current].setEnabled(true);
//System.out.println("this panel false");
this.setTitle("Week At:"+current+" TC1.6---UnLocked");
}
}
/**
* this method help get current panel
* */
/*
public int getCurrent(){
if(current>6){
//max of current is 6,never than 6 so ,never equal 0
current = 0 ;
}
if(current <1 ){
current = 6 ;
}
return current ;
}*/
public void setData() throws IOException{
String fn = null;
Object o =new Object();
fn="e:/TC/week"+current+".dat";
File ff = new File(fn);
FileInputStream fis = new FileInputStream(ff);
DataInputStream dis = new DataInputStream(fis);
for(int i = 0;i<5;i++){
for(int j = 0;j<4;j++){
fn=dis.readUTF();
if(fn.equals("nl")){
fn = "";
}
// System.out.println(fn);
o = (Object)fn;
mt[current].setValueAt(o, i, j);
}
}
fis.close();
dis.close();
switch(current){
case 0: this.setTitle("TC1.6 --Sunday");break;
case 1: this.setTitle("TC1.6 --Monday");break;
case 2: this.setTitle("TC1.6 --Tuesday");break;
case 3: this.setTitle("TC1.6 --Wednesay");break;
case 4: this.setTitle("TC1.6 --Thursday");break;
case 5: this.setTitle("TC1.6 --Friday");break;
case 6: this.setTitle("TC1.6 --Saturday");break;
case 7: this.setTitle("TC1.6 --Help");break;
default: this.setTitle("TC1.6 --Welcome");break;
}
}
/**
* copy files in execute package to local disk
* it needs file object
* */
/*public void copyMethod(InputStream cpf,String mf)throws IOException{
int tp = 0 ;
BufferedInputStream is = new BufferedInputStream(cpf);
String extr = "e:/TC/";
File cpfd =new File(extr+mf);
System.out.println(extr+mf);
if(!cpfd.exists()){
cpfd.createNewFile();
}
FileOutputStream os = new FileOutputStream(cpfd);
while((tp = is.read())!=-1){
os.write(tp);
}
os.flush();
is.close();
os.flush();
}
*/
public static void main(String[] args){
String fname = null;
TC t = new TC();
File f = new File("e:/TC");
if(!f.exists()){
f.mkdir();
}
for(int i =0 ;i<7;i++){
f = new File("e:/TC/week"+i+".dat");
if(!f.exists()){
try {
f.createNewFile();
FileOutputStream foo = null;
try {
foo = new FileOutputStream(f);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DataOutputStream doo = new DataOutputStream(foo);
for(int j = 0;j<20;j++){
try {
doo.writeUTF("nl");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
f = new File("e:/TC/help.txt");
if(!f.exists()){
try {
f.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FileWriter foos = null;
try {
foos = new FileWriter(f);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedWriter bos = new BufferedWriter(foos);
try {
bos.write("1.you can select menubar to loacte week");
bos.newLine();
bos.write("2.double click table to edit this TableCourse");
bos.newLine();
bos.write("3.when you make it up,you must use 'Lock'menuitem to store the data you inputed");
bos.newLine();
bos.write("4.when the table is locked ,you can`t edit it ever until youclick 'UnLoak' menuitem");
bos.flush();
foos.close();
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
t.launch();
}
}
TC1.6SourceCode java课程表的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- leetcode.图.207课程表-Java
1. 具体题目 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1].给定 ...
- Java实现 LeetCode 630 课程表 III(大小堆)
630. 课程表 III 这里有 n 门不同的在线课程,他们按从 1 到 n 编号.每一门课程有一定的持续上课时间(课程时间)t 以及关闭时间第 d 天.一门课要持续学习 t 天直到第 d 天时要完成 ...
- Java实现 LeetCode 210 课程表 II(二)
210. 课程表 II 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0, ...
- Java实现 LeetCode 207 课程表
207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- 从爬取湖北某高校hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;
原创文章与源码,如果转载请注明来源. 开发环境:Myeclipse,依赖包:apache-httpclient . Jsoup.base64 一.概述 整个系统用Java开发.我们现在要做的是类似于超 ...
- Java实验2-数据库编程
目标:掌握Java数据库编程 内容: 学生选课系统包括如下数据库表 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredi ...
- Java 多线程(1)-Thread和Runnable
一提到Java多线程,首先想到的是Thread继承和Runnable的接口实现 Thread继承 public class MyThread extends Thread { public void ...
随机推荐
- JavaMail(一):利用JavaMail发送简单邮件
JavaMail,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.但它并没有包含在JDK中,要使用JavaMail首先要下载ja ...
- 扫码枪读取条形码数据(vue)
扫码枪是模拟键盘输入的,所有事件为document.onkeypress = function(){}. 在vue项目中,是没有window.onload的,所以在created钩子函数中做: var ...
- winform不能循环引用,使用接口传值到界面
public partial class frmMain : Form, IFormManager { 4 public frmMain() { InitializeComponent(); 8 } ...
- CF57C Array
题目传送门 题目大意(摘自洛谷) 描述 对于长度为n的数组A,A中只包含从1到n的整数(可重复).如果A单调不上升或单调不下降,A就可称为美丽的. 找出在长度为n时,有几个美丽的A. 输入 一个整数n ...
- Python+Appium实现自动化测试
一.环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android ...
- Effective Python读书笔记
有些位置可能翻译理解的不到位,各位看官如有疑问,欢迎留言赐教. Pythonic Thinking 大家经常用Pythonic来形容python语法风格的编程方式:简单优美,没有之一:通过import ...
- 免费IP归属地查询接口汇总
目前做一个项目,需要判断是国内还是国外的IP,具体要求为接口稳定,速度快,免费,不异常,所以我整理了优质的接口供大家筛选. IP归属地查询API 一,淘宝API接口 http://ip.taobao. ...
- 第八周Java实验作业
实验六 接口的定义与使用 实验时间 2018-10-18 1.实验目的与要求 (1) 掌握接口定义方法: 声明: public interface 接口名 {...} 接口体中包含常量定义和方法定义 ...
- iOS 真机查看沙盒目录
iExplorer 的方法试的时候设备都无法检测到,建议放弃 启用iTunes文件共享,才能够看沙盒内的文件,只需要在plist文件中添加如下信息: <key>UIFileSharingE ...
- IOS 手动添加第三方库报错问题
当不想使用CocoaPods来管理和使用第三方库的时候,就需要手动添加和配置这些第三方库,难免会出现一些问题,主要问题汇总如下: 1.AFNetworking.NKNetWork.ZxingObjC等 ...