JAVA用swing做个日历
来源:互联网 发布:cocos2d js下载 编辑:程序博客网 时间:2024/05/18 03:58
JAVA作业,我比作业要求的多加了些功能,可以滚轮和键盘左右键翻页快捷键做的也许比较傻吧,监听到就直接doClick();沉迷JAVA,对于我这种以前只写过控制台程序的来说,图形界面真是打开了新世界
//MySwingCalendar.javapackage test2;import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.KeyEventPostProcessor;import java.awt.KeyboardFocusManager;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Calendar;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.BevelBorder;import javax.swing.border.CompoundBorder;public class MySwingCalendar extends JFrame{ /** * */private static final long serialVersionUID = 1L;private Calendar calendar;private final static String week[]={"日","一","二","三","四","五","六"};private JLabel dayLable[][]=new JLabel[6][7],monthLable; private void initCalendar() { calendar=Calendar.getInstance(); calendar.set(Calendar.DATE,0); } private void initFrame() { setIconImage(new ImageIcon("icon\\Calendar.gif").getImage()); setSize(500, 300); getContentPane().setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); addWindowListener(new WindowAdapter() {@Overridepublic void windowOpened(WindowEvent e) {requestFocus();}}); } public MySwingCalendar() {super("Calendar"); initCalendar(); initFrame(); JPanel northPanel=new JPanel(new FlowLayout(FlowLayout.CENTER)); JButton preMonth=new JButton("上月"); preMonth.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { calendarAdd(-1); } }); northPanel.add(preMonth); JButton nextMonth=new JButton("下月"); nextMonth.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { calendarAdd(1); } }); northPanel.add(nextMonth); getContentPane().add(northPanel,BorderLayout.NORTH); JPanel centerPanel=new JPanel(new GridLayout(7, 7,1,1)); centerPanel.setBorder(new BevelBorder(BevelBorder.LOWERED)); for(String s:week) { JButton weekButton=new JButton(s); weekButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {requestFocus();}}); centerPanel.add(weekButton); } for(int i=0;i<6;i++) { for(int j=0;j<7;j++) { JPanel tempJpanel=new JPanel(); dayLable[i][j]=new JLabel(); //dayLable[i][j].enableInputMethods(true); dayLable[i][j].setHorizontalAlignment(JLabel.CENTER); if(j%2==0)tempJpanel.setBackground(Color.white); else tempJpanel.setBackground(Color.lightGray); tempJpanel.add(dayLable[i][j]); centerPanel.add(tempJpanel); } } getContentPane().add(centerPanel, BorderLayout.CENTER); JPanel southPanel=new JPanel(new FlowLayout(FlowLayout.CENTER)); monthLable=new JLabel(); southPanel.add(monthLable); getContentPane().add(southPanel,BorderLayout.SOUTH); updateCalendar(); KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventPostProcessor(new KeyEventPostProcessor() { private long lastLeftPress=0; private long lastRightPress=0; @Overridepublic boolean postProcessKeyEvent(KeyEvent e) {long currentTime=System.currentTimeMillis();if(e.getID() == KeyEvent.KEY_PRESSED){if (e.getKeyCode() == KeyEvent.VK_LEFT&¤tTime-lastLeftPress>100) {lastLeftPress = currentTime;preMonth.requestFocus();preMonth.doClick();} else if (e.getKeyCode() == KeyEvent.VK_RIGHT&¤tTime-lastRightPress>100) {lastRightPress = currentTime;nextMonth.requestFocus();nextMonth.doClick();}}return false;}}); addMouseWheelListener(new MouseWheelListener() { private long lastMove=0;@Overridepublic void mouseWheelMoved(MouseWheelEvent e) {int wheelRotation=e.getWheelRotation();long currentTime=System.currentTimeMillis(); if(wheelRotation==-1&¤tTime-lastMove>70){ lastMove=currentTime;preMonth.requestFocus();preMonth.doClick();} else if(wheelRotation==1&¤tTime-lastMove>70){ lastMove=currentTime; nextMonth.requestFocus(); nextMonth.doClick();} }}); setVisible(true);} public String toString(){ String s=calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月\n"; for(String i:week)s+=" "+i; s+="\n"; int day=calendar.get(Calendar.DAY_OF_WEEK)%7; for(int i=0;i<day;i++)s+=" "; int maxDay=calendar.getActualMaximum(Calendar.DAY_OF_MONTH); for(int i=1;i<=maxDay;i++) { s+=String.format("%4d",i); if(day==6) { s+="\n"; day=0; } else day++; } return s; } private void updateCalendar() { int i=0,j=calendar.get(Calendar.DAY_OF_WEEK)%7;; int maxDay=calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //System.out.println(this); for(int k=0;k<j;k++)dayLable[0][k].setText(""); for(int k=1;k<=maxDay;k++) { dayLable[i][j].setText(Integer.toString(k)); if(j==6) { i++; j=0; } else j++; } while(i<6) { dayLable[i][j].setText(""); if(j==6) { i++; j=0; } else j++; } monthLable.setText("日历:"+calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"); } public void calendarAdd(int delta) { calendar.add(Calendar.MONTH,delta); updateCalendar(); } public static void main(String args[]) { new MySwingCalendar(); }}
0 0
- JAVA用swing做个日历
- 用Java Swing作一个日历控制程序
- Java Swing 日历控件
- Java Swing 日历控件
- java swing实现日历显示
- 用java做个日历,如果是这一天,就标上*号
- 用Java Swing实现的自定义日历组件
- java做简单日历
- Java做可视化日历
- 使用Tkinter做个日历
- 使用Tkinter做个日历
- Java Swing做ui
- 自定义java Swing日历选择组件JCalendarChooser
- java swing日历calendar demo源代码下载
- java swing组件实现gui 日历程序
- 用Java Swing作一个日历控制程序-Java基础-Java-编程开发
- JAVA做全年考勤日历
- 用Swing做资源管理器
- 操作系统中调度算法
- 无题
- XML约束技术-DTD约束
- Eclipse添加dtd文档为xml编辑提供代码提示功能
- js闭包总结
- JAVA用swing做个日历
- 识别macho block的ida脚本
- nuoj 114 大数
- [编程题]取近似值
- 2016/12/8 1002.Babelfish
- DOS批处理前言
- mybatis多表关联查询
- Android 6.0下出错: UnsatisfiedLinkError: dlopen failed . text relocations
- hdu 5988 费用流