⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mymonthchooser.java

📁 一个可以存储和打印成绩单的系统
💻 JAVA
字号:
package org.signsmile.view.util;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.Window;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Calendar;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JWindow;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

public class MyMonthChooser extends JWindow implements ChangeListener {
	private static final long serialVersionUID = 1L;
	private static final int width = 150; // 界面宽度
	private static final int height = 90; // 界面高度
	// 月历表格配色----------------//
	private static final Color palletTableColor = Color.orange; // 日历表底色
	private static final Color monthColor1 = Color.white; 
	private static final Color monthColor2 = Color.darkGray; 
	private static final Color BorderColor = Color.black; // 边框色
	// 控制条配色------------------//
	private static final Color controlLineColor = Color.pink; // 控制条底色
	private static final Color controlTextColor = Color.white; // 控制条标签文字色
	private static final Color rbBorderColor = Color.red; // 控制条边框色
	private static final String YEAR = "年";
	private static final String MONTH = "月";
	private static final String title[] = {"", "", "", ""};
	private static final String numbers[][] = { {"1", "2", "3", "4"},{ "5", "6", "7", "8"},{ "9", "10", "11", "12"}};
	private JSpinner sprYYYY;
	private JTable dateTable;
	private int x, y;
	private DefaultTableModel dateTableMd;
	private static MyMonthChooser myMonthChooser;
	private JTextField jTextField;
	private MyMonthChooser() {
	}

	private MyMonthChooser(int x, int y, Window owner, JTextField jTextField) {
		super(owner);
		try {
			viewInit();
			this.jTextField = jTextField;
			this.setBounds(x, y, width, height);
			this.setVisible(true);
		} catch (Exception exception) {
			exception.printStackTrace();
		}
	}

	public static MyMonthChooser getInstance(int x, int y, Window owner,
			JTextField jTextField) {
		if (myMonthChooser == null)
			myMonthChooser = new MyMonthChooser(x, y, owner, jTextField);
		else{
			myMonthChooser.setLocation(x, y);
			myMonthChooser.setJTextField(jTextField);
		}
		return myMonthChooser;
	}
	

	private void viewInit() {
		JPanel jpNorth = new JPanel();
		jpNorth.setFont(new Font("宋体", Font.PLAIN, 12));// 设置固定字体,以免调用环境改变影响界面美观
		jpNorth.setBorder(BorderFactory.createLineBorder(Color.black));
		jpNorth.setBackground(controlLineColor);
		jpNorth.setLayout(new FlowLayout());
		sprYYYY = new JSpinner();
		sprYYYY.setEditor(new JSpinner.NumberEditor(sprYYYY, "####"));
		sprYYYY.setBorder(BorderFactory.createLineBorder(rbBorderColor));
		jpNorth.add(sprYYYY);
		JLabel jLbyear = new JLabel(YEAR);
		jLbyear.setForeground(controlTextColor);
		jpNorth.add(jLbyear);

		dateTable = new JTable();
		dateTable.setAutoscrolls(false);
		dateTable.setBorder(BorderFactory.createLineBorder(BorderColor));
		dateTable.setRequestFocusEnabled(false);
		dateTable.setRowHeight(20);
		dateTable.setRowSelectionAllowed(true);
		dateTable.setColumnSelectionAllowed(true);
		dateTable.setShowGrid(false);
		dateTable.setFont(new Font("楷体", Font.BOLD, 15));
		dateTable.setBackground(palletTableColor);

		// this.setAlwaysOnTop(true);
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().setBackground(SystemColor.inactiveCaption);
		this.getContentPane().add(jpNorth, BorderLayout.NORTH);
		this.getContentPane().add(dateTable, BorderLayout.SOUTH);
		
		initDates();
		sprYYYY.addChangeListener(this);
		dateTable.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				Object value = dateTable.getValueAt(dateTable.getSelectedRow(),
						dateTable.getSelectedColumn());
				if (value != null)
					jTextField.setText((new StringBuilder()).append(
							sprYYYY.getValue()).append(YEAR).append(value).append(MONTH)
							.toString());
				if (e.getClickCount() == 1 && value != null)
					showDialog(false);
			}
		});
		drawTableColor();
	}
	
	private void drawTableColor() {
		class MyCellRenderer extends DefaultTableCellRenderer {
			private static final long serialVersionUID = 1L;

			public Component getTableCellRendererComponent(JTable table,
					Object value, boolean isSelected, boolean hasFocus, int row,
					int column) {
				Component cell = super.getTableCellRendererComponent(table, value,
						isSelected, hasFocus, row, column);
//				if ((column%2==0&&row%2==1)||(column%2==1&&row%2==0))
				if (column%2==0)
					cell.setForeground(monthColor1);
				else {
					cell.setForeground(monthColor2);
				}
				return cell;
			}
		}
		MyCellRenderer myCellRenderer = new MyCellRenderer();
		myCellRenderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
		dateTable.setDefaultRenderer(dateTable.getColumnClass(1),myCellRenderer);
	}

	private void initDates() {
		Calendar d = Calendar.getInstance();
		sprYYYY.setValue(d.get(Calendar.YEAR));
		int month = d.get(Calendar.MONTH);
		x = month/4+1;
		y = month%4+1;
		try {
			dateTableMd = new DefaultTableModel(numbers, title) {
				private static final long serialVersionUID = 1L;

				public boolean isCellEditable(int pRow, int pCol) {
					return false;
				}
			};
			dateTable.setModel(dateTableMd);
			selectedCell(x, y);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private void selectedCell(int row, int col) {
		row--;
		col--;
		dateTable.setRowSelectionInterval(row, row);
		dateTable.setColumnSelectionInterval(col, col);
	}
	public void showDialog(boolean showOrhide) {
		setVisible(showOrhide);
	}

	public void stateChanged(ChangeEvent arg0) {
	}

	public void setJTextField(JTextField textField) {
		jTextField = textField;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -