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 ...
随机推荐
- css3 HSLA 颜色制造半透明效果
简介 HSL色彩模式是工业界的一种颜色标准,是通过对色调(H).饱和度(S).亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色调,饱和度,亮度三个通道的颜色, ...
- Simulink仿真入门到精通(十三) Simulink创建自定义库
当用户自定义了一系列模块之后,可以自定义模块库将同类自定义模块显示到Simulink Browser中,作为库模块方便地拖曳到新建模型中. 建立这样的自定义库需要3个条件: 建立library的mdl ...
- TCP/IP协议基本知识
1.TCP/IP协议中主机与主机之间通信的三要素: IP地址(IP address) 子网掩码(subnet mask) IP路由(IP router) 2.IP地址的分类及每一类的范围: A类1-1 ...
- php 调用curl_init失败
当你在开发微信公众号,微信小程序的时候,往往会遇到困难 进入服务器,输入 tail -f /var/log/apache2/error.log 看看apache2的日志 就因为php 的curl扩展没 ...
- 关于python如何安装和配置chromedriver以及一些相关问题
解决问题三部曲:观察,思考,尝试 1.如何配置chromedriver: https://www.cnblogs.com/lintest/p/11697059.html 常见异常解决的一个参考吧:ht ...
- 一文讲清楚MySQL事务隔离级别和实现原理,开发人员必备知识点
经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下. MySQL 事务 本文所说的 MySQL 事务都是指在 I ...
- 图数据库 Nebula Graph TTL 特性
导读 身处在现在这个大数据时代,我们处理的数据量需以 TB.PB, 甚至 EB 来计算,怎么处理庞大的数据集是从事数据库领域人员的共同问题.解决这个问题的核心在于,数据库中存储的数据是否都是有效的.有 ...
- Selenium系列(二) - 控制浏览器操作的详细解读
如果你还不想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识 ...
- 故事:走进JVM的世界(图文并茂)
注意!本文较长,建议先收藏再阅读.更多文章可以关注作者公众号:码上实战 你也可以 star 我的 GitHub上本文所属仓库:https://github.com/flyhero/MarkNote 说 ...
- Github搜索技巧整理
Github官方网址:https://github.com/ 一.详细官方文档:https://help.github.com/en/github/searching-for-information- ...