1. 程式人生 > >自定義java Swing日曆選擇元件JCalendarChooser

自定義java Swing日曆選擇元件JCalendarChooser

package cn.net.iem.view.mainframe;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

import cn.net.iem.calendar.JCalendarChooser;
import cn.net.iem.view.EditJTextField;
import cn.net.iem.view.loggin.Loggin;
/*
 	 * @param time      發震時間
	 * @param longitude 經度
	 * @param altitude  緯度
	 * @param depth     深度
	 * @param magnitude 震級
	 * @param location  參考位置
 * */
public class SearchPane extends JPanel implements ActionListener,MouseListener {
	//編輯屬性
	//private JComboBox regionComBox;              
	private EditJTextField minTimeField,maxTimeField,minLongitudeField,maxLongitudeField,minAltitudeField,maxAltitudeField,
	                       minDepthField,maxDepthField,minMagnitudeField,maxMagnitudeField,locationField;
	private JButton searchBut;
	//儲存編輯屬性後的結果
	private String minTime;
	private String maxTime;
	private float minLongitude;
	private float maxLongitude;
	private float minAltitude;
	private float maxAltitude;
	private int minDepth;
	private int maxDepth;
	private float minMagnitude;
	private float maxMagnitude;
	private String location;
	public SearchPane(){
		super();
		initial(10);
		create();
		addListener();
	}
	/**
	 *初始化類屬性
	 * */
	private void initial(int size){
		minTimeField=new EditJTextField(size);
		maxTimeField=new EditJTextField(size);
		minLongitudeField=new EditJTextField(size);
		maxLongitudeField=new EditJTextField(size);
		minAltitudeField=new EditJTextField(size);
		maxAltitudeField=new EditJTextField(size);
        minDepthField=new EditJTextField(size);
        maxDepthField=new EditJTextField(size);
        minMagnitudeField=new EditJTextField(size);
        maxMagnitudeField=new EditJTextField(size);
        locationField=new EditJTextField(size);
        searchBut=new JButton("查詢");
	}
	/**
	 *元件新增監聽器
	 * */
	private void addListener(){
		searchBut.addActionListener(this);
		minTimeField.addMouseListener(this);
		maxTimeField.addMouseListener(this);
	} 
	/**
	 *建立面板 
	 * */
	private void create(){	
		JLabel label1=new JLabel("發震時間:",JLabel.RIGHT);
		JLabel label3=new JLabel("經度:",JLabel.RIGHT);
		JLabel label4=new JLabel("緯度:",JLabel.RIGHT);
		JLabel label5=new JLabel("深度(千米):",JLabel.RIGHT);
		JLabel label6=new JLabel("震級(M):",JLabel.RIGHT);
		JLabel label7=new JLabel("位置(支援模糊查詢):",JLabel.RIGHT);  
		JPanel pane1=new JPanel();
		pane1.add(searchBut);
		JPanel pane2=new JPanel();
		pane2.setLayout(new GridBagLayout());
        //設定網格組佈局管理器的引數
        GridBagConstraints constraints=new GridBagConstraints();
        //使用網格組佈局新增控制元件
        Loggin.add(pane2, label1,           constraints, 0,0,1,1,0,0,0,0); 
        Loggin.add(pane2, minTimeField,     constraints, 1,0,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel(" 到 "), constraints, 3,0,1,1,0,0,0,0); 
        Loggin.add(pane2, maxTimeField,     constraints, 4,0,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel("        "),   constraints, 6,0,2,1,0,0,0,0); 
        Loggin.add(pane2, label3,           constraints, 8,0,1,1,0,0,0,0); 
        Loggin.add(pane2, minLongitudeField,constraints, 9,0,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel(" 到 "), constraints,11,0,1,1,0,0,0,0);
        Loggin.add(pane2, maxLongitudeField,constraints,12,0,2,1,0,0,0,0);      
        Loggin.add(pane2, label4,           constraints, 0,1,1,1,0,0,0,0); 
        Loggin.add(pane2, minAltitudeField, constraints, 1,1,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel(" 到 "), constraints, 3,1,1,1,0,0,0,0); 
        Loggin.add(pane2, maxAltitudeField, constraints, 4,1,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel("        "),   constraints, 6,1,2,1,0,0,0,0); 
        Loggin.add(pane2, label5,           constraints, 8,1,1,1,0,0,0,0); 
        Loggin.add(pane2, minDepthField,    constraints, 9,1,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel(" 到 "), constraints,11,1,1,1,0,0,0,0);
        Loggin.add(pane2, maxDepthField,    constraints,12,1,2,1,0,0,0,0);   
        Loggin.add(pane2, label6,           constraints, 0,2,1,1,0,0,0,0); 
        Loggin.add(pane2, minMagnitudeField,constraints, 1,2,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel(" 到 "), constraints, 3,2,1,1,0,0,0,0); 
        Loggin.add(pane2, maxMagnitudeField,constraints, 4,2,2,1,0,0,0,0); 
        Loggin.add(pane2, new JLabel("        "),   constraints, 6,2,2,1,0,0,0,0); 
        Loggin.add(pane2, label7,           constraints, 8,2,1,1,0,0,0,0); 
        Loggin.add(pane2, locationField,    constraints, 9,2,5,1,0,0,0,0); 
        
        this.setLayout(new BorderLayout());
		this.add(pane2,BorderLayout.NORTH);	
		this.add(pane1,BorderLayout.SOUTH);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==searchBut){
			//開啟查詢介面
			new SearchFrame().setVisible(true);
		}
	}
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==minTimeField&&e.getButton()==MouseEvent.BUTTON1){
			JCalendarChooser myJCalendar = new JCalendarChooser(minTimeField);
			int returnValue = myJCalendar.showOpenDialog();
			if (returnValue == JCalendarChooser.CLEAR_OPTION)
				minTimeField.setText("");
			else if (returnValue == JCalendarChooser.APPROVE_OPTION)
				minTimeField.setText(myJCalendar.getDate());
		}else if(e.getSource()==maxTimeField&&e.getButton()==MouseEvent.BUTTON1){
			JCalendarChooser myJCalendar = new JCalendarChooser(maxTimeField);
			int returnValue = myJCalendar.showOpenDialog();
			if (returnValue == JCalendarChooser.CLEAR_OPTION)
				maxTimeField.setText("");
			else if (returnValue == JCalendarChooser.APPROVE_OPTION)
				maxTimeField.setText(myJCalendar.getDate());
		}
	}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}
	public void mousePressed(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}
}


相關推薦

定義java Swing日曆選擇元件JCalendarChooser

package cn.net.iem.view.mainframe; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridBagConstraints; impo

定義.NET Calarder日曆控制元件(實現部落格園日曆)

這幾天看了下.net 日曆控制元件,去Google了下出來很多,大家都知道.netframework版本中自帶的日曆控制元件只有日期沒有備註的,比如我在1月1日下面要顯示出‘元旦節’這三個字,那要怎麼做呢? 下面先熟悉下Calarder控制元件的常用屬性: Selectio

iOS之定義簡單的日曆控制元件

iOS並沒有系統日曆控制元件,但是說白了就是基於UICollectionView的封裝,對於UICollectionView我就不說他的建立了,主要難在資料的處理,下面我就說一下處理資料的思路: 我將資料分為三部分進行處理:如下圖: - (NSDateCom

Android定義View之-----日曆控制元件

寫在前面 Android的系統的日曆控制元件十分簡陋,在專案中拿不出手啊,這也許就是蘋果和Android的顯式區別:系統控制元件美觀合理,各App統一,最後App和系統風格統一;而Android由於長相上先天不足,當然自從有了MD之後也十分fashion了

Java Swing使用者介面元件選擇元件簡介(未完待續)

對使用者介面進行設計時,很多情況下都需要給使用者以選項做出選擇。因此常常會用到選擇元件,其中包括:複選框元件(JCheckBox)、單選框元件(JRadioButton)等。本篇文章主要介紹了Java Swing元件複選框JCheckBox用法,結合具體例項形

定義Android日期時間選擇控制元件DateTimePickerDialog

ad = new AlertDialog.Builder(activity).setIcon(R.drawable.datetimeicon).setTitle(initDateTime).setView(dateTimeLayout).setPositiveButton("設定",

java Swing 時間選擇器控制元件

效果圖: 中的 flowlayout_v.jar 檔案 示例程式碼: HongYeLingGuDate類 import java.awt.Color; import java.awt.Dimension; import java.awt.Flow

iOS 定義日期和資料來源選擇控制元件

需求 App開發中經常會有日期選擇(如生日、睡眠定時等)或者省市區選擇等此類功能,通常UI中不會單獨使用UI中的控制元件,而是在UIPickerView的基礎上增加一個取消和確定按鈕 特點 支援常見的選擇型的資料格式 該控制元件集成了 yyyy-M

JAVA SWING 日期選擇控制元件(目前支援JLable和JTextField)

package com.monitor.date; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; i

Android View 滾輪控制元件LoopView+定義Dialog [時間地域選擇器] Picker

發現了一些好的東西:  https://github.com/weidongjian/androidWheelView 曾經找到過 WheelView。當時江湖救急,直接用了。資料來源太大的話會導致效能降低。 當時有吐槽如果有使用自定義view或者繼承ListView

定義 Java Annotation ,讀取註解值

sta tools stp exc num value mage test lang 1. 首先是自定義註解: Java代碼 package cn.veji.hibernate.po; import java.lang.annot

定義 java 加載器

new dmi ESS class a length turn ngs 加密 list 先寫個java類的:allen.java import java.util.Date; import java.util.List; /** * 加載類 * @author Adm

c# 定義事件傳參(控制元件資料同步更新)

下面是傳值的視窗程式碼   public partial class Form1 : Form {//自定義一個事件 public event EventHandler SetMsg; public Form1() {

Android定義View--翻書控制元件(一)

0.前言 最近重看了一遍封神演義,感覺QQ閱讀那個翻書的效果挺好的,準備做一個。上週五下午用了兩個小時只寫了一部分功能,以後有時間再完善 1.分析 先看效果圖 這個空間,說簡單也簡單,說難也難,簡單就在於這個效果主要就是依賴canvas的clippath才見到部分canvas,難就難在裁

Silverlight定義資料繫結控制元件應該如何處理IEditableObject和IEditableCollectionView物件

原文: Silverlight自定義資料繫結控制元件應該如何處理IEditableObject和IEditableCollectionView物件 原創文章,如需轉載,請註明出處。   最近在一直研究Silverlight下的資料繫結控制元件,發現有這樣兩個介面IEditableObject

定義JAVA事件監聽機制

JAVA中的事件機制的參與者有3種角色:Event、EventSource、Listener 1.Event:就是事件產生時具體的“事件”,用於Listener的相應的方法之中,作為引數一般存在於Listener的方法之中。 2.EventSource:事件源,它的作用主要是對事件和監聽進行

WPF TabIndex預設樣式修改:去掉預設虛線框、定義樣式(Button控制元件為例)

去掉Tab選中預設虛線框 Tab鍵切換時,被選控制元件自動存在虛線框,有時候為了介面美觀,這個虛線框就顯得比較麻煩。廢話不多說,下面是方法。 <Window.Resources> <Style x:Key="MeyFocusVisual" TargetType="{

Ext 6.5.3 classic版本,定義實現togglefield開關控制元件

1,在Ext 6.5.3的classic版中沒有提供開關控制元件,參照modern版中 togglefield開關的實現,繼承滑動器(sliderfield),自定義一個開關按鈕。支援value繫結和點選切換狀態以及表單提交。 2,完成後效果如圖:   3, js程式碼如下:

C#GDI+定義繪製曲線圖表控制元件DataChart 簡單實現 C#GDI+ 繪製線段(實線或虛線)、矩形、字串、圓、橢圓

C#GDI+自定義繪製曲線圖表控制元件DataChart 這裡只說明在計算刻度和曲線繪製的時候 只提供思路,只是做了下簡單的計算,不喜勿噴 還望見諒,高手直接飄過吧。這個要做好,還是需要研究研究演算法的,比如刻度隨著控制元件的大小發生改變的時候計算不同的值,根據刻度範圍來計算刻度以及刻度值等,這裡沒有研究,

Android定義帶有聯動時間選擇器(年,月,日,周,十,分)備錄

概述:         在日常的android開發中經常會遇到關於時間選擇的操作開發,比如和賬單記錄有關的記賬類軟體,以及進行鬧鐘定時任務的定時類軟體扥等。實現時間選擇器往往都會用到android.widget包中的NumPicker控制元件。關於NumPick