java IP地址,端口校验+下拉菜单选框监听事件+模拟QQ发送按钮旁的小箭头功能
- package com.frame;
- import java.awt.BorderLayout;
- import javax.swing.text.AttributeSet;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.Image;
- import java.awt.Label;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.FocusAdapter;
- import java.awt.event.FocusEvent;
- import java.awt.event.ItemEvent;
- import java.awt.event.ItemListener;
- import java.net.URL;
- import java.text.ParseException;
- import java.util.StringTokenizer;
- import javax.swing.BorderFactory;
- import javax.swing.Icon;
- import javax.swing.ImageIcon;
- import javax.swing.InputVerifier;
- import javax.swing.JButton;
- import javax.swing.JComboBox;
- import javax.swing.JComponent;
- import javax.swing.JDialog;
- import javax.swing.JFormattedTextField;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JPopupMenu;
- import javax.swing.JScrollPane;
- import javax.swing.JSpinner;
- import javax.swing.JTextArea;
- import javax.swing.JTextField;
- import javax.swing.SpinnerModel;
- import javax.swing.SpinnerNumberModel;
- import javax.swing.UIManager;
- import javax.swing.UnsupportedLookAndFeelException;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ChangeListener;
- import javax.swing.text.BadLocationException;
- import javax.swing.text.DefaultFormatter;
- import javax.swing.text.DocumentFilter;
- //import org.jvnet.substance.skin.SubstanceOfficeSilver2007LookAndFeel;
- import com.frame.TextVerifier.PortVerifier;
- public class Opertionbak extends JFrame implements ItemListener{
- private String [] textArray;
- private JPanel panel;
- private JPanel panel1; //放置 登陆模块
- private JMenuItem menuItem_oracle,menuItem_mysql; //添加菜单选项为oracle;
- private JComboBox combox_jdbc;
- private JTextField text_user,text_pass,text_database;
- private String s="jdbc:mysql://localhost:3306";
- private String sb="jdbc:oracle:thin:@";
- private String s1,s2,s3,s4,s5;
- private JButton button_user;
- private JLabel label_welcome,label_ip,label_database,label_pass;
- private JTextArea text_url; //显示url连接方式
- private JLabel label_tips,label_tips2,label_tips3; //提示错误
- private JPopupMenu menu;
- private JFormattedTextField text_ip = null;
- private JFormattedTextField text_port = null;
- public Opertionbak(){
- menu= new JPopupMenu();
- text_user= new JTextField();
- textArray = new String[]{"数据库名字1","数据库名字2","数据库名字3"};
- for(String s : textArray){
- JMenuItem item = new JMenuItem(s);
- item.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- JMenuItem item = (JMenuItem) e.getSource();
- text_user.setText(item.getText());
- label_tips.setVisible(false);
- } });
- menu.add(item);
- }
- panel= new JPanel();
- panel.setLayout(null);
- panel.setBounds(0, 0, 500, 400);
- this.setTitle("增删改查功能实现");
- this.setBounds(100, 100, 500, 400);
- init();
- this.add(panel,BorderLayout.CENTER);
- this.setLocationRelativeTo(null);
- this.setResizable(false);
- this.setVisible(true);
- //为点击添加关闭事件
- this.addWindowListener(new java.awt.event.WindowAdapter() {
- public void windowClosing(java.awt.event.WindowEvent e){
- System.exit(0);
- }
- });
- }
- //返回URL 地址
- public URL getRes(String str){
- return this.getClass().getClassLoader().getResource(str);
- }
- private void init(){
- panel1 = new JPanel();
- panel1.setLayout(null);
- JLabel label_jdbc = new JLabel("选择数据库类型:");
- label_jdbc.setFont(new Font("黑体",Font.PLAIN,15));
- combox_jdbc = new JComboBox();
- combox_jdbc.setEditable(false);
- combox_jdbc.addItem("Oracle数据库");
- combox_jdbc.addItem("MySql数据库");
- label_jdbc.setBounds(8, 12, 120, 30);
- combox_jdbc.setBounds(90, 40, 100, 25);
- JLabel label_tip = new JLabel();
- //label_tip.setIcon(new ImageIcon(getRes("com/pccw/image/tip.jpg")));
- //label_tip.setBounds(5, 170, 55, 45);
- JLabel label_bottom = new JLabel();
- //label_bottom.setIcon(new ImageIcon(getRes("com/pccw/image/back.jpg")));
- label_welcome = new JLabel("欢迎使用!!");
- label_bottom.setBounds(10, 245, 140, 100);
- label_welcome.setBounds(100, 230, 120, 30);
- JLabel label_user = new JLabel("用户名:");
- label_user.setBounds(10, 15, 50, 25);
- text_user.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- if(text_user.getText().equals("")){
- label_tips.setVisible(true);
- label_tips.setText("用户没有填写");
- }else{
- //sb.append(sb+s1+s2);
- label_tips.setVisible(false);
- //text_url.setText(sb.toString());
- }
- }
- });
- text_user.setBounds(70, 15, 140, 25);
- button_user= new JButton("...");
- button_user.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- if(e.getSource()==button_user){
- menu.show(button_user,0,button_user.getHeight());
- }
- else{
- JMenuItem item = (JMenuItem) e.getSource();
- text_user.setText(item.getText());
- }
- }
- });
- button_user.setBounds(245, 15, 25, 25);
- JLabel label_pass = new JLabel("口 令:");
- text_pass = new JTextField();
- label_pass.setBounds(10, 55, 50, 25);
- text_pass.setBounds(70, 55, 140, 25);
- text_pass.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- if(text_pass.getText().equals("")){
- label_tips2.setVisible(true);
- label_tips2.setText("密码没有填写");
- }
- else{
- label_tips2.setVisible(false);
- }
- }
- });
- label_tips=new JLabel();
- label_tips2=new JLabel();
- label_tips3=new JLabel();
- label_tips.setBounds(100, 40, 80, 12);
- label_tips2.setBounds(100, 80, 80, 12);
- label_tips3.setBounds(150, 105, 100, 12);
- JLabel label_database = new JLabel("数据库:");
- text_database = new JTextField();
- label_database.setBounds(10, 95, 50, 25);
- text_database.setBounds(70, 95, 70, 25);
- text_database.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- if(text_database.getText().equals("")){
- label_tips3.setVisible(true);
- label_tips3.setText("数据库没有填写");
- }
- else{
- String database;
- label_tips3.setVisible(false);
- String s1=text_ip.getText().toString();
- String s2=text_port.getText().toString();
- String s3=text_database.getText().toString();
- database="jdbc:oracle:thin:@"+s1+":"+s2+":"+s3;
- text_url.setText(database);
- }
- }
- });
- JLabel label_ip = new JLabel("I P:");
- // IP地址文本域的校验
- class IPAddressVerifier extends InputVerifier {
- private boolean b = false;
- public boolean verify(JComponent component) {
- // TODO Auto-generated method stub
- JFormattedTextField field = (JFormattedTextField) component;
- b = field.isEditValid();
- System.out.println(b);
- if (b == false) {
- String opt = new String("确定");
- Object[] options = { "确定" };
- JOptionPane.showOptionDialog(null, "IP地址输入有误请重新输入", "警告",
- JOptionPane.DEFAULT_OPTION,
- JOptionPane.WARNING_MESSAGE, null, options, options[0]);
- field.setText(null);
- }
- return field.isEditValid();
- }
- }
- //IP地址校验
- class IPAddressFormatter extends DefaultFormatter {
- public String valueToString(Object value) throws ParseException {
- if (!(value instanceof byte[])) {
- throw new ParseException("Not a byte[]", 0);
- }
- byte[] a = (byte[]) value;
- if (a.length != 4)
- throw new ParseException("Length!=4", 0);
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < 4; i++) {
- int b = a[i];
- if (b < 0)
- b += 256;
- builder.append(String.valueOf(b));
- if (i < 3)
- builder.append('.');
- }
- return builder.toString();
- }
- public Object stringToValue(String text) throws ParseException {
- StringTokenizer tokenizer = new StringTokenizer(text, ".");
- byte[] a = new byte[4];
- for (int i = 0; i < 4; i++) {
- int b = 0;
- if (!tokenizer.hasMoreElements()) {
- System.out.println("few");
- throw new ParseException("Too few bytes", 0);
- }
- try {
- b = Integer.parseInt(tokenizer.nextToken());
- } catch (NumberFormatException e) {
- throw new ParseException("Not an integer", 0);
- }
- if (b < 0 || b >= 256)
- throw new ParseException("Byte out of range", 0);
- a[i] = (byte) b;
- }
- if (tokenizer.hasMoreElements())
- throw new ParseException("Too many bytes", 0);
- return a;
- }
- }
- text_ip = new JFormattedTextField(new IPAddressFormatter());
- text_ip.setInputVerifier(new IPAddressVerifier());
- text_ip.setValue(new byte[] { (byte) 10, (byte) 87, 66, (byte) 30 });
- label_ip.setBounds(10, 135, 40, 25);
- text_ip.setBounds(55, 135, 100, 25);
- text_ip.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- if(text_ip.getText().equals("")){
- label_tips3.setVisible(true);
- label_tips3.setText("IP没有填写");
- }
- else{
- String sbr;
- label_tips3.setVisible(false);
- String s1=text_ip.getText().toString();
- String s2=text_port.getText().toString();
- String s3=text_database.getText().toString();
- sbr="jdbc:oracle:thin:@"+s1+":"+s2+":"+s3;
- text_url.setText(sbr);
- }
- }
- });
- // 端口校验
- class PortFilter extends DocumentFilter {
- public void replace(FilterBypass fb, int offset, int length,
- String string, AttributeSet attr) throws BadLocationException {
- System.out.println("replace");
- if (string != null) {
- StringBuilder builder = new StringBuilder(string);
- for (int i = builder.length() - 1; i >= 0; i--) {
- int cp = builder.codePointAt(i);
- if (!Character.isDigit(cp)) {
- builder.deleteCharAt(i);
- if (Character.isSupplementaryCodePoint(cp)) {
- i--;
- builder.deleteCharAt(i);
- }
- }
- }
- string = builder.toString();
- }
- super.replace(fb, offset, length, string, attr);
- }
- }
- class PortVerifier extends InputVerifier {
- private boolean b = false;
- @Override
- public boolean verify(JComponent component) {
- // TODO Auto-generated method stub
- JFormattedTextField field = (JFormattedTextField) component;
- b = field.isEditValid();
- if (b == true) {
- try {
- int n = Integer.parseInt(field.getText());
- if (n < 1024 || n > 65535) {
- Object[] options = { "确定" };
- JOptionPane.showOptionDialog(null,
- "端口必须在1024-65535之间,请重新输入!", "Warning",
- JOptionPane.DEFAULT_OPTION,
- JOptionPane.WARNING_MESSAGE, null, options,
- options[0]);
- field.setText("");
- b = false;
- }
- } catch (NumberFormatException e) {
- // 如果输入的字符串在转换为整数时超出整数范围由此异常处理
- Object[] options = { "确定" };
- JOptionPane.showOptionDialog(null,
- "端口必须在1024-65535之间,请重新输入!", "Warning",
- JOptionPane.DEFAULT_OPTION,
- JOptionPane.WARNING_MESSAGE, null, options,
- options[0]);
- field.setText("");
- b = false;
- }
- }
- return b;
- }
- }
- JLabel label_port = new JLabel("端 口:");
- label_port.setBounds(165, 135, 40, 25);
- text_port = new JFormattedTextField(new DefaultFormatter() {
- private DocumentFilter filter = new PortFilter();
- protected DocumentFilter getDocumentFilter() {
- return filter;
- }
- });
- text_port.setBounds(205, 135, 60, 25);
- text_port.setText("1521");
- text_port.setInputVerifier(new PortVerifier());
- text_port.setEditable(true);
- text_port.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- String sbrt;
- String s1=text_ip.getText().toString();
- String s2=text_port.getText().toString();
- String s3=text_database.getText().toString();
- sbrt="jdbc:oracle:thin:@"+s1+":"+s2+":"+s3;
- text_url.setText(sbrt);
- }
- });
- JLabel label_url1 = new JLabel("URL连接方式:");
- label_url1.setFont(new Font("宋体",Font.PLAIN,12));
- text_url = new JTextArea(sb);
- text_url.setLineWrap(true);
- JScrollPane scrollpane = new JScrollPane(text_url);
- label_url1.setBounds(20, 175, 140, 25);
- scrollpane.setBounds(100, 180, 165, 60);
- //为两个菜单项添加响应事件
- combox_jdbc.addItemListener(this);
- //把用户名等添加到panel1面板中
- panel1.add(label_port);
- panel1.add(label_tips);
- panel1.add(label_tips2);
- panel1.add(label_tips3);
- panel1.add(label_url1);
- panel1.add(scrollpane);
- panel1.add(label_ip);
- panel1.add(text_ip);
- panel1.add(text_port);
- panel1.add(label_port);
- panel1.add(text_database);
- panel1.add(label_database);
- panel1.add(label_pass);
- panel1.add(text_pass);
- panel1.add(button_user);
- panel1.add(label_user);
- panel1.add(text_user);
- panel.add(menu);
- //panel.add(text_url);
- JButton button_tail=new JButton("设置");
- button_tail.setBounds(190, 300, 50, 20);
- JButton button_reset=new JButton("重置");
- button_reset.setBounds(250, 300, 50, 20);
- JButton button_cummit=new JButton("提交");
- button_cummit.setBounds(310, 300, 50, 20);
- //点击设置按钮跳转到详细设置页面
- button_tail.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e) {
- new Detail();
- }
- });
- //点击提交按钮事件
- button_cummit.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- }
- });
- //点击重置按钮数据项清空
- button_reset.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e) {
- label_welcome.setText("重置信息!!");
- text_user.setText("");
- text_pass.setText("");
- }
- });
- panel1.setBounds(200, 15, 280, 255);
- panel1.setBorder(BorderFactory.createEtchedBorder());
- panel1.setVisible(true);
- panel.add(button_tail);
- panel.add(button_reset);
- panel.add(button_cummit);
- panel.add(panel1);
- panel.add(label_welcome);
- panel.add(combox_jdbc);
- panel.setVisible(true);
- }
- public static void main(String[] args) {
- JFrame.setDefaultLookAndFeelDecorated(true);
- JDialog.setDefaultLookAndFeelDecorated(true);
- try {
- UIManager.setLookAndFeel(new SubstanceOfficeSilver2007LookAndFeel());
- } catch (UnsupportedLookAndFeelException e) {
- e.printStackTrace();
- }
- new Opertionbak();
- }
- @Override
- public void itemStateChanged(ItemEvent e) {
- if(e.getStateChange()==ItemEvent.SELECTED){
- if(e.getItem().toString().equals("Oracle数据库")){
- text_port.setText("1521");
- text_url.setText(sb);
- //System.out.println("sssssssssssss");
- text_database.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- if(text_database.getText().equals("")){
- label_tips3.setVisible(true);
- label_tips3.setText("数据库没有填写");
- }
- else{
- String database;
- label_tips3.setVisible(false);
- String s1=text_ip.getText().toString();
- String s2=text_port.getText().toString();
- String s3=text_database.getText().toString();
- database="jdbc:oracle:thin:@"+s1+":"+s2+":"+s3;
- text_url.setText(database);
- }
- }
- });
- text_port.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- String sbrt;
- String s1=text_ip.getText().toString();
- String s2=text_port.getText().toString();
- String s3=text_database.getText().toString();
- sbrt="jdbc:oracle:thin:@"+s1+":"+s2+":"+s3;
- text_url.setText(sbrt);
- }
- });
- text_ip.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- if(text_ip.getText().equals("")){
- label_tips3.setVisible(true);
- label_tips3.setText("IP没有填写");
- }
- else{
- String sbr;
- label_tips3.setVisible(false);
- String s1=text_ip.getText().toString();
- String s2=text_port.getText().toString();
- String s3=text_database.getText().toString();
- sbr="jdbc:oracle:thin:@"+s1+":"+s2+":"+s3;
- text_url.setText(sbr);
- }
- }
- });
- }
- else{
- text_url.setText(s);
- text_port.setText("3306");
- text_port.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- String sbrt;
- String s2=text_port.getText().toString();
- sbrt="jdbc:mysql://localhost:"+s2;
- text_url.setText(sbrt);
- }
- });
- text_ip.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- String sbr;
- label_tips3.setVisible(false);
- sbr="jdbc:mysql://localhost:3306";
- text_url.setText(sbr);
- }
- });
- text_database.addFocusListener(new FocusAdapter(){
- public void focusLost(final FocusEvent e){
- String sbrt;
- String s2=text_port.getText().toString();
- sbrt="jdbc:mysql://localhost:"+s2;
- text_url.setText(sbrt);
- }
- });
- }
- }
- }
- }