private void jbInit() throws Exception
{
titledBorder1 = new TitledBorder("");
this.setDefaultCloseOperation(3);
this.setFont(new java.awt.Font("Dialog", 0, 10));
this.setModal(true);
this.setResizable(false);
this.getContentPane().setLayout(borderLayout3);
intYear=calendar.get(Calendar.YEAR);
intMonth=calendar.get(Calendar.MONTH);
intDay=calendar.get(Calendar.DATE); YearScrollbar.setMaximum(2100);//最大年份
YearScrollbar.setMinimum(1900);//最小年份
YearScrollbar.setOrientation(JScrollBar.HORIZONTAL);
YearScrollbar.setFont(new java.awt.Font("Dialog", 0, 10));
YearScrollbar.setBorder(BorderFactory.createLoweredBevelBorder());
YearScrollbar.setMaximumSize(new Dimension(16, 20));
YearScrollbar.setMinimumSize(new Dimension(16, 20));
YearScrollbar.setNextFocusableComponent(table);
YearScrollbar.setPreferredSize(new Dimension(50, 20));
YearScrollbar.setValue(intYear); for(int i=1;i<=12;i++)
MonthChoice.addItem(String.valueOf(i));
MonthChoice.setSelectedIndex(intMonth);
panel2.setLayout(xYLayout1);
MonthChoice.setFont(new java.awt.Font("Dialog", 0, 10));
MonthChoice.setBorder(BorderFactory.createLoweredBevelBorder());
MonthChoice.setMaximumRowCount(2); label3.setFont(new java.awt.Font("Dialog", 0, 10));
label3.setText(" 月");
label2.setFont(new java.awt.Font("Dialog", 0, 10));
label2.setText(" 年 "); table.getTableHeader().setFont(new Font("Dialog",0,10));
table.getTableHeader().setDefaultRenderer(new DefaultTableCellRenderer()
{
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
{
if(value!=null)
return new JLabel(value.toString(),JLabel.CENTER);
else
return new JLabel();
}
}); table.getTableHeader().setResizingAllowed(false);
table.getTableHeader().setReorderingAllowed(false);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setCellSelectionEnabled(true);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true);
table.setShowHorizontalLines(false);
table.setShowVerticalLines(false);
table.setGridColor(Color.white);
table.setRowMargin(3);
table.setFont(new java.awt.Font("Dialog", 0, 10));
table.setAlignmentX((float) 0.0);
table.setAlignmentY((float) 0.0);
table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); jPanel1.setLayout(borderLayout1);
TimeLabel.setFont(new java.awt.Font("Dialog", 0, 10));
TimeLabel.setText("label1");
jPanel2.setLayout(borderLayout2);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
jScrollPane1.setBorder(BorderFactory.createLoweredBevelBorder());
jScrollPane1.setNextFocusableComponent(table);
jPanel1.setBorder(BorderFactory.createLineBorder(Color.black));
jPanel1.setNextFocusableComponent(table);
YearTextField.setColumns(4);
YearTextField.setEditable(false);
YearTextField.setFont(new java.awt.Font("Dialog", 0, 10));
YearTextField.setDisabledTextColor(Color.white);
YearTextField.setText(String.valueOf(intYear));
panel2.setNextFocusableComponent(table);
jPanel2.setNextFocusableComponent(table);
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jScrollPane1, BorderLayout.CENTER);
jPanel1.add(panel2, BorderLayout.NORTH); panel2.add(MonthChoice, new XYConstraints(89, 0, 37, -1));
panel2.add(label3, new XYConstraints(127, 0, 15, 20));
panel2.add(label2, new XYConstraints(74, 0, -1, 20));
panel2.add(YearTextField, new XYConstraints(22, 0, 30, -1));
panel2.add(YearScrollbar, new XYConstraints(1, 0, 72, -1)); jPanel1.add(jPanel2, BorderLayout.SOUTH);
jPanel2.add(TimeLabel, BorderLayout.WEST);
table.setSelectionMode(0); MonthChoice.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
intMonth=MonthChoice.getSelectedIndex();
fillDate(intYear,intMonth,intDay);
}
}); YearScrollbar.addAdjustmentListener(new java.awt.event.AdjustmentListener()
{
public void adjustmentValueChanged(AdjustmentEvent e)
{
intYear=YearScrollbar.getValue();
YearTextField.setText(String.valueOf(intYear));
fillDate(intYear,intMonth,intDay);
}
}); //日期表格鼠标动作处理
table.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if(e.getClickCount()>1)//不单击
{
try
{
Integer.parseInt(table.getValueAt(table.getSelectedRow(),
table.getSelectedColumn()).toString());
isConfirm = true;
//System.out.println(FinalyDate);
int n = table.getComponentCount();
table.getComponent(n).setBackground(Color.blue);
//这里~我写得不对~应该如何去写?
//cancel();//退出
}
catch(Exception ex){}
}
else//单击更改状态栏日期
try
{
intDay = Integer.parseInt(table.getValueAt(table.getSelectedRow(),
table.getSelectedColumn()).toString());
calendar = new GregorianCalendar(intYear,intMonth,intDay);
} catch(NumberFormatException ex){}
catch(NullPointerException ex){}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd");
FinalyDate = sdf.format(calendar.getTime());
TimeLabel.setText(FinalyDate);
}
});
this.requestFocus();
table.requestFocus();
fillDate(intYear,intMonth,intDay);
} public void show()
{
isConfirm=false;
super.show();
} /**如果选择了日期*/
public boolean isConfirm()
{
return isConfirm;
} protected void processWindowEvent(WindowEvent e)
{
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
cancel();
}
super.processWindowEvent(e);
} private void cancel()
{
dispose();
} public void run()
{
}}
解决方案 »
- 新手学习Java关于关键字super有个不解
- 关于JAVA指令
- 关于java中向函数传递数组参数和返回数组的问题
- 关于Java Reflection of Generics 的一些问题
- 有办法在Linux下连接Access吗。
- 请教,关于public class
- (菜鸟问题)请问两个窗体之间如何进行通信啊?
- 关于进度条的问题,请大虾指教
- 怎样把textarea里的内容折叠起来
- java怎么读呀,我听了好几个版本了,好象和字典上不一样呀
- 请问,java中有什么共同的函数可以用来控制线程同步?(不用synchronized)在线等待。
- 刚参加完CSDN的第六次技术论谈,感觉实在是有点…………… (内详)
import java.awt.event.*;
import javax.swing.table.*;
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.beans.*;
import javax.swing.border.*;
import javax.swing.event.*;public class CalendarDlg extends JDialog implements Runnable
{
private GregorianCalendar calendar = new GregorianCalendar();//日期
private int intYear=2000;//年
private int intMonth=1;//月
private int intDay=1;//日
private String FinalyDate="";//输出的日期字符窜
private boolean isRun=true;//是否在运行
private int doubleClickedRow = 0;
private int doubleClickedColumn = 0;
private boolean isDoubleClicked = false;
//构造一个不可编辑的表模型 model
private DefaultTableModel model=new DefaultTableModel(new Object[6][7],
new Object[]{"日","一","二","三","四","五","六"})
{
public boolean isCellEditable(int row,int column)
{
return false;
}
}; private TitledBorder titledBorder1;
private JPanel jPanel1 = new JPanel();
private JPanel panel2 = new JPanel();
private JComboBox MonthChoice = new JComboBox();//月份选择框
private JLabel label3 = new JLabel();
private JLabel label2 = new JLabel();
private JScrollBar YearScrollbar = new JScrollBar(); private JTable table = new JTable(model)
{//日期表格
public TableCellRenderer getCellRenderer(int row,int column)
{
return new DefaultTableCellRenderer()
{//日期表格填充并设定组件
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
{
JLabel label=null;
if(value!=null)
{
label = new JLabel(value.toString(),JLabel.CENTER);
label.setOpaque(true);
label.setFont(table.getFont());
if(isSelected)//选择日期
{
label.setForeground(Color.white);
label.setBackground(Color.green);
label.setBorder(BorderFactory.createLineBorder(Color.yellow));
}
else//没有选择
{
label.setForeground(Color.black);
label.setBackground(Color.white);
}
if (isDoubleClicked && doubleClickedRow == row && doubleClickedColumn == column) {
label.setForeground(Color.white);
label.setBackground(Color.blue);
isDoubleClicked = false;
}
}
return label;
}
};
}
}; private JScrollPane jScrollPane1 = new JScrollPane(table);
private JPanel jPanel2 = new JPanel();
private JLabel TimeLabel = new JLabel();
private BorderLayout borderLayout2 = new BorderLayout();
private BorderLayout borderLayout3 = new BorderLayout();
private BorderLayout borderLayout1 = new BorderLayout();
private XYLayout xYLayout1 = new XYLayout();
private JTextField YearTextField = new JTextField();//年
private boolean isConfirm=false; public CalendarDlg(Frame parentFrame)
{
super(parentFrame,"",true);
try
{
jbInit();
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
}
catch(Exception e)
{
e.printStackTrace();
}
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(350,500);
setLocation((d.width -getWidth())/2,(d.height-getHeight())/2) ;
} //给 model 添加日期
private void fillDate(int pYear,int pMonth,int pDay)
{
calendar = new GregorianCalendar(pYear,pMonth,1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd");
FinalyDate = sdf.format(new GregorianCalendar(pYear,pMonth,pDay).getTime());//获得当前日期
TimeLabel.setText(FinalyDate);//下面显示日期 label int maxDayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
if(pDay>maxDayCount)
pDay=maxDayCount;
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
int selectRow = 0;
int selectCol = dayOfWeek;
int count=0;
int num=0; for(int i=0;i<6;i++)
{
for(int j=0;j<7;j++)
{
count++;
if(count>=dayOfWeek&&count<maxDayCount+dayOfWeek)
{
model.setValueAt(String.valueOf(++num),i,j);
if(num==pDay)
{
selectRow=i;
selectCol=j;
}
}
else
model.setValueAt(null,i,j);
}
} table.setRowSelectionInterval(selectRow,selectRow);
table.setColumnSelectionInterval(selectCol,selectCol);
} //得到选择日期
public String getFinalyDate()
{
return FinalyDate;
}
private void jbInit() throws Exception
{
titledBorder1 = new TitledBorder("");
this.setDefaultCloseOperation(3);
this.setFont(new java.awt.Font("Dialog", 0, 10));
this.setModal(true);
this.setResizable(false);
this.getContentPane().setLayout(borderLayout3);
intYear=calendar.get(Calendar.YEAR);
intMonth=calendar.get(Calendar.MONTH);
intDay=calendar.get(Calendar.DATE); YearScrollbar.setMaximum(2100);//最大年份
YearScrollbar.setMinimum(1900);//最小年份
YearScrollbar.setOrientation(JScrollBar.HORIZONTAL);
YearScrollbar.setFont(new java.awt.Font("Dialog", 0, 10));
YearScrollbar.setBorder(BorderFactory.createLoweredBevelBorder());
YearScrollbar.setMaximumSize(new Dimension(16, 20));
YearScrollbar.setMinimumSize(new Dimension(16, 20));
YearScrollbar.setNextFocusableComponent(table);
YearScrollbar.setPreferredSize(new Dimension(50, 20));
YearScrollbar.setValue(intYear); for(int i=1;i<=12;i++)
MonthChoice.addItem(String.valueOf(i));
MonthChoice.setSelectedIndex(intMonth);
panel2.setLayout(xYLayout1);
MonthChoice.setFont(new java.awt.Font("Dialog", 0, 10));
MonthChoice.setBorder(BorderFactory.createLoweredBevelBorder());
MonthChoice.setMaximumRowCount(2); label3.setFont(new java.awt.Font("Dialog", 0, 10));
label3.setText(" 月");
label2.setFont(new java.awt.Font("Dialog", 0, 10));
label2.setText(" 年 "); table.getTableHeader().setFont(new Font("Dialog",0,10));
table.getTableHeader().setDefaultRenderer(new DefaultTableCellRenderer()
{
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
{
if(value!=null)
return new JLabel(value.toString(),JLabel.CENTER);
else
return new JLabel();
}
}); table.getTableHeader().setResizingAllowed(false);
table.getTableHeader().setReorderingAllowed(false);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setCellSelectionEnabled(true);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true);
table.setShowHorizontalLines(false);
table.setShowVerticalLines(false);
table.setGridColor(Color.white);
table.setRowMargin(3);
table.setFont(new java.awt.Font("Dialog", 0, 10));
table.setAlignmentX((float) 0.0);
table.setAlignmentY((float) 0.0);
table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); jPanel1.setLayout(borderLayout1);
TimeLabel.setFont(new java.awt.Font("Dialog", 0, 10));
TimeLabel.setText("label1");
jPanel2.setLayout(borderLayout2);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
jScrollPane1.setBorder(BorderFactory.createLoweredBevelBorder());
jScrollPane1.setNextFocusableComponent(table);
jPanel1.setBorder(BorderFactory.createLineBorder(Color.black));
jPanel1.setNextFocusableComponent(table);
YearTextField.setColumns(4);
YearTextField.setEditable(false);
YearTextField.setFont(new java.awt.Font("Dialog", 0, 10));
YearTextField.setDisabledTextColor(Color.white);
YearTextField.setText(String.valueOf(intYear));
panel2.setNextFocusableComponent(table);
jPanel2.setNextFocusableComponent(table);
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jScrollPane1, BorderLayout.CENTER);
jPanel1.add(panel2, BorderLayout.NORTH); panel2.add(MonthChoice, new XYConstraints(89, 0, 37, -1));
panel2.add(label3, new XYConstraints(127, 0, 15, 20));
panel2.add(label2, new XYConstraints(74, 0, -1, 20));
panel2.add(YearTextField, new XYConstraints(22, 0, 30, -1));
panel2.add(YearScrollbar, new XYConstraints(1, 0, 72, -1)); jPanel1.add(jPanel2, BorderLayout.SOUTH);
jPanel2.add(TimeLabel, BorderLayout.WEST);
table.setSelectionMode(0); MonthChoice.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
intMonth=MonthChoice.getSelectedIndex();
fillDate(intYear,intMonth,intDay);
}
}); YearScrollbar.addAdjustmentListener(new java.awt.event.AdjustmentListener()
{
public void adjustmentValueChanged(AdjustmentEvent e)
{
intYear=YearScrollbar.getValue();
YearTextField.setText(String.valueOf(intYear));
fillDate(intYear,intMonth,intDay);
}
}); //日期表格鼠标动作处理
table.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if(e.getClickCount()>1)//不单击
{
try
{
Integer.parseInt(table.getValueAt(table.getSelectedRow(),
table.getSelectedColumn()).toString());
isConfirm = true;
isDoubleClicked = true;
doubleClickedRow = table.getSelectedRow();
doubleClickedColumn = table.getSelectedColumn();
table.repaint();
//这里~我写得不对~应该如何去写?
//cancel();//退出
}
catch(Exception ex){}
}
else//单击更改状态栏日期
try
{
intDay = Integer.parseInt(table.getValueAt(table.getSelectedRow(),
table.getSelectedColumn()).toString());
calendar = new GregorianCalendar(intYear,intMonth,intDay);
} catch(NumberFormatException ex){}
catch(NullPointerException ex){}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd");
FinalyDate = sdf.format(calendar.getTime());
TimeLabel.setText(FinalyDate);
}
});
this.requestFocus();
table.requestFocus();
fillDate(intYear,intMonth,intDay);
} public void show()
{
isConfirm=false;
super.show();
} /**如果选择了日期*/
public boolean isConfirm()
{
return isConfirm;
} protected void processWindowEvent(WindowEvent e)
{
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
cancel();
}
super.processWindowEvent(e);
} private void cancel()
{
dispose();
} public void run()
{
}
}