62,614
社区成员
发帖
与我相关
我的任务
分享
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
class Frame1 extends JFrame {
JPanel contentPane;
JTable tab;
JPanel jpl;
JScrollPane sp;
JSpinner jsn;
JComboBox cmb;
JComboBox cmb2;
Calendar c=Calendar.getInstance();
public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
//contentPane.setLayout(null);
setSize(new Dimension(235, 210));
setTitle("Time");
cmb=new JComboBox();
for(int a=1;a<13;a++){
cmb.addItem(""+a);
}
cmb.setSelectedIndex(c.get(Calendar.MONTH));
cmb.setBounds(new Rectangle(93, 25, 39, 19));
cmb.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent itemEvent) {
timechange(cmb2.getSelectedIndex());
curChange();
}
});
cmb2=new JComboBox();
for(int a=1;a<c.getActualMaximum(Calendar.DATE)+1;a++){
cmb2.addItem(""+a);
}
cmb2.setSelectedIndex(c.get(Calendar.DAY_OF_MONTH)-1);
cmb2.setBounds(new Rectangle(155, 25, 43, 19));
cmb2.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent itemEvent) {
curChange();
tab.repaint();
}
});
SpinnerModel mode=new SpinnerNumberModel(c.get(Calendar.YEAR),1900,2099,1);
jsn=new JSpinner(mode);
jsn.setBounds(new Rectangle(17, 25, 53, 19));
jsn.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
timechange(cmb2.getSelectedIndex());
curChange();
}
});
tab=new JTable(CreateTable());
tab.setShowGrid(false);
tab.setSelectionMode(0);
tab.setCellSelectionEnabled(true);
tab.setSelectionBackground(Color.blue);
tab.setSelectionForeground(Color.decode("#E8E8E8"));
tab.setSurrendersFocusOnKeystroke(false);
tab.getTableHeader().setResizingAllowed(false);
tab.getTableHeader().setOpaque(false);
tab.getTableHeader().setBackground(Color.decode("#AABEF9"));
tab.getTableHeader().setReorderingAllowed(false);
tab.getTableHeader().setForeground(Color.decode("#E8E8E8"));
tab.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
if(!tab.getValueAt(tab.getSelectedRow(),tab.getSelectedColumn()).toString().equals(""))
cmb2.setSelectedIndex(Integer.parseInt(tab.getValueAt(tab.getSelectedRow(),tab.getSelectedColumn()).toString())-1);
}
});
sp=new JScrollPane();
sp.setBorder(null);
sp.getViewport().add(tab);
sp.setBounds(14,55,198,100);
sp.setBorder(BorderFactory.createEmptyBorder());
jpl=new JPanel();
jpl.setLayout(null);
jpl.setBounds(new Rectangle(98, 170, 225, 200));
jpl.setBorder(BorderFactory.createEtchedBorder());
jpl.add(sp);
jpl.add(jsn);
jpl.add(cmb);
jpl.add(cmb2);
jpl.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,1),"选择时间",5,5));
curChange();
contentPane.add(jpl);
this.addWindowListener(new WindowAdapter(){
public void windowDeactivated(WindowEvent e){
System.exit(0);
}
});
}
public DefaultTableModel CreateTable(){
String[] title={"日","一","二","三","四","五","六"};
Object[][] stu=new Object[5][7];
Vector data=new Vector();
c.set(Calendar.YEAR,Integer.parseInt(jsn.getValue().toString()));
c.set(Calendar.MONTH,cmb.getSelectedIndex());
c.set(Calendar.DATE,1);
for(int a=0;a<(c.get(Calendar.DAY_OF_WEEK)-1);a++){
data.add("");
}
for(int b=0;b<c.getActualMaximum(Calendar.DATE);b++){
data.add(""+(b+1));
}
for(int cc=0;cc<43-c.get(Calendar.DAY_OF_WEEK)-c.getActualMaximum(Calendar.DATE);cc++){
data.add("");
}
for(int a=0;a<5;a++){
stu[a][0]=data.get((a*7)+0);
stu[a][1]=data.get((a*7)+1);
stu[a][2]=data.get((a*7)+2);
stu[a][3]=data.get((a*7)+3);
stu[a][4]=data.get((a*7)+4);
stu[a][5]=data.get((a*7)+5);
stu[a][6]=data.get((a*7)+6);
}
DefaultTableModel d=new TableModelOfCellDiseditable();
d.setDataVector(stu,title);
return d;
}
public void curChange(){
Calendar c = Calendar.getInstance();
c.set(Integer.parseInt(jsn.getValue().toString()), cmb.getSelectedIndex(), cmb2.getSelectedIndex()+1);
int dateOfWeek = c.get(Calendar.DAY_OF_WEEK);
int weekOfMonth = c.get(Calendar.WEEK_OF_MONTH);
tab.changeSelection(weekOfMonth-1, dateOfWeek-1, true, false);
}
public void timechange(int index) {
tab.setModel(CreateTable());
cmb2.removeAllItems();
for(int a=1;a<c.getActualMaximum(Calendar.DATE)+1;a++){
cmb2.addItem(""+a);
}
if(cmb2.getItemCount()>=index+1){
cmb2.setSelectedIndex(index);
}else{
cmb2.setSelectedIndex(cmb2.getItemCount()-1);
}
}
}
class TableModelOfCellDiseditable extends DefaultTableModel{
TableModelOfCellDiseditable(){
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
/*
if (columnIndex == 0) { // 序列号不能修改
return false;
}
if(rowIndex < 5){ // 前5行不能修改
return false;
}
return true;
}
*/
return false;//所有单元格不允许编辑
}
}
public class Test{
public static void main(String [] args){
Frame1 f=new Frame1();
//f.setSize(100, 100);
f.setVisible(true);
}
}
tab.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
int i = Integer.valueOf((tab.getValueAt(tab.getSelectedRow(),
tab.getSelectedColumn()).toString()) + 0);
System.out.println(i);
if (i == 0) {
tab.setSelectionBackground(Color.white);
tab.setUpdateSelectionOnSort(true);
} else
// if(tab.getValueAt(tab.getSelectedRow(),
// tab.getSelectedColumn()).toString().equals("")){
// tab.setSelectionBackground(Color.white);
// }
// if (!tab.getValueAt(tab.getSelectedRow(),
// tab.getSelectedColumn()).toString().equals(""))
{
cmb2.setSelectedIndex(Integer.parseInt(tab.getValueAt(
tab.getSelectedRow(), tab.getSelectedColumn())
.toString()) - 1);
tab.setSelectionBackground(Color.blue);
}
}
});