java 实现弹出式的日历框!急!!! [email protected][email protected]谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我曾经写了一个,不过在我家中电脑上,如果到5.1还需要的话,可以发给你.保证能用.([email protected]) 我也要一份,[email protected],谢谢 我也要[email protected]谢谢 应该可以通过mouse事件促发,来new一个新窗体!然后在隐藏! qljsd (我本善良) :如果我给你的那个控件好用的话,请加分吧! me也想要一份!mail:[email protected] 控件我找到了,不用等到51了.上面的我都发了,没收到的,给我来个mail. nil2000,也给我一份,谢谢。[email protected] 试试这个,package untitled1;import java.awt.*;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 GUICalendarDLG 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 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.blue); label.setBorder(BorderFactory.createLineBorder(Color.yellow)); }else{ label.setForeground(Color.black); label.setBackground(Color.white); } } 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 GUICalendarDLG(Frame parentFrame) { super(parentFrame,"",true); try{ jbInit(); enableEvents(AWTEvent.WINDOW_EVENT_MASK); }catch(Exception e){ e.printStackTrace(); } Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); this.setSize(150,170); setLocation((d.width -getWidth())/2,(d.height-getHeight())/2) ; } 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); 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.setFont(new java.awt.Font("Dialog", 0, 10)); 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(19, 0, 37, -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); 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(){ }} 用DOM修改xml文档有点困惑 用MyEclipse打包成jar文件后,出现NullPointException异常 变量和属性,请高手指教 环境变量里并没有设置,可是还是能找到路径? 高分急救!!!!!!!!!!!!!!!! 高手来帮帮忙好吗? socket输入流用什么办法临时保存好呢? 更改数据库中的记录,好奇怪 初学者问题:boolean型判断 什么是对等体?谁能解释addNodify()的作用? applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗 关于JDK安全类的重要问题(急):Certificate.verify() 这个函数为什么不能用?
保证能用.([email protected])
[email protected]
谢谢
如果我给你的那个控件好用的话,请加分吧!
上面的我都发了,没收到的,给我来个mail.
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 GUICalendarDLG 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 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.blue);
label.setBorder(BorderFactory.createLineBorder(Color.yellow));
}else{
label.setForeground(Color.black);
label.setBackground(Color.white);
}
}
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 GUICalendarDLG(Frame parentFrame) {
super(parentFrame,"",true);
try{
jbInit();
enableEvents(AWTEvent.WINDOW_EVENT_MASK); }catch(Exception e){
e.printStackTrace();
}
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(150,170);
setLocation((d.width -getWidth())/2,(d.height-getHeight())/2) ;
}
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);
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.setFont(new java.awt.Font("Dialog", 0, 10));
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(19, 0, 37, -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);
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(){ }}