package test.swing.component; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.border.EmptyBorder; public class TestJTextArea extends JFrame { private JPanel contentPane; public static void main(String[] args) { TestJTextArea frame = new TestJTextArea(); frame.setVisible(true); } public TestJTextArea(){ setBounds(100, 100, 450, 300); //(左邊界,上邊界,宽度,長度) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(10,10,10,10)); //(上,左,下,右) setContentPane(contentPane); //將Layout設定為由左至右的排列components之間的關係,超出面板宽度的元件往下列遞補 contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); //(置左,左右間距,上下間距) JTextArea descTA = new JTextArea(5,30); contentPane.add(descTA); } }
PHP字串長度找子字串與取代字串的常用函數
PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...
2017年12月23日 星期六
建立一個JTextArea文字區塊
建立一個Spinner下拉選單
package test.swing.component; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.JTextField; import javax.swing.SpinnerListModel; import javax.swing.SpinnerModel; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; public class TestJSpinner extends JFrame { public static void main(String[] args) { try{ //設置系統預設的theme UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); TestJSpinner frame = new TestJSpinner(); frame.setVisible(true); }catch(Exception ex){ ex.printStackTrace(); } } public TestJSpinner(){ setTitle("Test JSpinner for version 1.0.1"); //setIconImage(Toolkit.getDefaultToolkit().getImage(TestJTable.class.getResource("/deviantart_48x48.png"))); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 500); //(左邊界,上邊界,宽度,長度) JPanel contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(10, 10, 10, 10)); //(上,左,下,右) setContentPane(contentPane); //設置Layout的樣式來呈現component之間在Panel上的位置關係 contentPane.setLayout(new BorderLayout()); JPanel jpane = new JPanel(); // 加入資料到Spinner String[] portal = {"Google","Yahoo","PChome"}; SpinnerModel portalSM = new SpinnerListModel(portal); JSpinner portalSP = new JSpinner(portalSM); // 設定Spinner的宽度和高度 Dimension d1 = portalSP.getPreferredSize(); d1.width = 120; d1.height = 30; portalSP.setPreferredSize(d1); // 修改文字欄位的外觀 JSpinner.ListEditor editor = new JSpinner.ListEditor(portalSP); JTextField tf = editor.getTextField(); tf.setHorizontalAlignment(JTextField.CENTER); tf.setFont(new Font("微軟正黑體", Font.PLAIN, 14)); portalSP.setEditor(editor); jpane.add(portalSP); contentPane.add(jpane, BorderLayout.CENTER); } }
建立一個JPopupMenu彈出選單
package test.swing; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; public class JPopupMenuSample { public static void main(final String args[]) { JFrame frame = new JFrame("JPopupMenu Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 建立彈出選單 JPopupMenu popupMenu = new JPopupMenu("Title"); // 剪下 JMenuItem cutMenuItem = new JMenuItem("Cut"); popupMenu.add(cutMenuItem); // 貼上 JMenuItem copyMenuItem = new JMenuItem("Copy"); popupMenu.add(copyMenuItem); // 貼上 JMenuItem pasteMenuItem = new JMenuItem("Paste"); pasteMenuItem.setEnabled(false); popupMenu.add(pasteMenuItem); // 加入分隔線 popupMenu.addSeparator(); // 尋找 JMenuItem findMenuItem = new JMenuItem("Find"); popupMenu.add(findMenuItem); JButton label = new JButton("按右鍵-彈出選單"); frame.add(label); label.setComponentPopupMenu(popupMenu); frame.setSize(350, 250); frame.setVisible(true); } }
建立一個Combox下拉選單
package test.swing.component; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class TestJButton extends JFrame { private JPanel contentPane; public static void main(String[] args) { TestJButton frame = new TestJButton(); frame.setVisible(true); } public TestJButton(){ setBounds(100, 100, 450, 300); //(左邊界,上邊界,宽度,長度) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(10,10,10,10)); //(上,左,下,右) setContentPane(contentPane); //將Layout設定為由左至右的排列components之間的關係,超出面板宽度的元件往下列遞補 contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); //(置左,左右間距,上下間距) JButton finishBtn = new JButton("完成按鈕"); contentPane.add(finishBtn); } }
建立一個JButton元件
package test.swing.component; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class TestJButton extends JFrame { private JPanel contentPane; public static void main(String[] args) { TestJButton frame = new TestJButton(); frame.setVisible(true); } public TestJButton(){ setBounds(100, 100, 450, 300); //(左邊界,上邊界,宽度,長度) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(10,10,10,10)); //(上,左,下,右) setContentPane(contentPane); //將Layout設定為由左至右的排列components之間的關係,超出面板宽度的元件往下列遞補 contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); //(置左,左右間距,上下間距) JButton finishBtn = new JButton("完成按鈕"); contentPane.add(finishBtn); } }
2015年4月30日 星期四
實用Swift Mailer類庫用來發送php電子郵件
Swift Mailer是一款功能特別強大的PHP物件導向的發送電子郵件的類別函式庫。它可以讓你透過內建的mail()函數、SMTP、postfix、甚至是你自己客製化的通訊協定來達到寄送email的目的。還可以有效的阻擋email的表頭遭到注入式攻擊,真的確是一個簡單容易使用的PHP郵件發送類庫。下載連結:http://swiftmailer.org/download
一個簡單發送SMTP Gmail電子郵件的範例
一個簡單發送SMTP Gmail電子郵件的範例
<?php require_once 'swiftmailer-5.x/lib/swift_required.php'; // 採用預設的mail()數函發email // $transport = Swift_MailTransport::newInstance(); // 使用SMTP的方式來發送gmail $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') ->setUsername('Your username') ->setPassword('Your password') ; // 填寫email的主旨、內容、寄件者、收件者 $message = Swift_Message::newInstance(); $message->setTo(array( "jason@gmail.com" => "Jason.Terry" //,"abc@yahoo.com" => "Mike.Porter" )); $message->setSubject("Swift Mail測試中..."); $message->setBody("恭喜您! Swift測試郵件發送成功。"); $message->setFrom("swiftmailer@gamil.com", "Swift-mailer"); // Send the email $mailer = Swift_Mailer::newInstance($transport); $mailer->send($message); echo 'Send Swift mail successfully!!';
2015年4月29日 星期三
常用的三種PHP加解密方法
談起PHP的資料加密、解密方式,一般我們會聯想到的一定是私密的資料或是重要的數據,才需要經過加密的演算,產生一串人肉眼無法辯識的字串編碼,透過網路傳遞到接收端,再經過解密的演算,還原回原始的內容。就目前而言mcrypt_encrypt, md5與base64是PHP常常使用到的加解密方法,下面我們會個別介紹:
1. MD5
它是一種以128bit的固定長度表示字串的密碼雜湊函數。
2. Base64
Base64是一種採用英文字母大小寫、阿拉伯數字、加號「+」或斜槓「/」,所組合而成的字串編碼方式,習慣應用於MIME格式的email、儲存於XML的複雜資料。
3. mcrypt_encrypt
一個簡單PHP內建加密、解密的函數。
1. MD5
它是一種以128bit的固定長度表示字串的密碼雜湊函數。
<?php // 加密 echo md5("測試字元!"); ?>
2. Base64
Base64是一種採用英文字母大小寫、阿拉伯數字、加號「+」或斜槓「/」,所組合而成的字串編碼方式,習慣應用於MIME格式的email、儲存於XML的複雜資料。
<?php // base64加密 echo base64_encode("測試字元!"); // base64解密 echo base64_decode("測試字元!"); ?>
3. mcrypt_encrypt
一個簡單PHP內建加密、解密的函數。
<?php // 設定金鑰, 負責對資料進行加解密 $key = "ac181c517bdf24ce053556bb280a2dcb"; /** * 加密函數 */ function encrypt($str) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); return base64_encode(trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, self::$key, $str, MCRYPT_MODE_ECB, $iv))); } /** * 解密函數 */ function decrypt($str) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, self::$key, base64_decode($str), MCRYPT_MODE_ECB, $iv)); } ?>
訂閱:
文章 (Atom)
-
PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...
-
回簡單JAX-WS Web Service使用教學頁面 在這一篇文章中,我們將介紹如何透過一個簡單的Java AP Client來存取一個可以正常連線運作的Web Service( JAX-WS )服務, 一般來說 這種Java應用程式的Web Service Client習...
-
Ant本身並非是一個Windows的程式,因此安裝過程需要一些手動安裝步驟。 1. 首先,到apache ant的官方網站 http://ant.apache.org/bindownload.cgi 下載ant的程式套件壓縮檔 2. 再來,將Ant程式套件的zi...