java IP地址,端口校验+下拉菜单选框监听事件+模拟QQ发送按钮旁的小箭头功能
来源:互联网 发布:北京金和软件 编辑:程序博客网 时间:2024/06/11 23:42
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); } }); } } } }
图片不会插入。。。。
直接放到类里面运行就可以了!~示例图搞不上来!!
- java IP地址,端口校验+下拉菜单选框监听事件+模拟QQ发送按钮旁的小箭头功能
- java IP地址,端口校验+下拉菜单选框监听事件+模拟QQ发送按钮旁的小箭头功能
- 具有删除功能的下拉菜单按钮。类似于QQ登录框的用户输入框
- 具有删除功能的下拉菜单按钮。类似于QQ登录框的用户输入框
- java按钮下拉菜单
- Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息
- 仿QQ发送地址功能
- 按钮监听事件的实现方式【JAVA】
- java中对按钮的事件监听
- 【Java】使用JFrame监听事件创建一个复制文本功能的窗体程序与按钮快捷键
- VC实现工具栏的下拉箭头按钮
- 如何实现工具栏的下拉箭头按钮
- 如何实现工具栏的下拉箭头按钮
- 下拉菜单隐藏箭头
- JavaScript实现下拉菜单对文本框赋值的小功能
- 模拟select下拉框,解决ie9以下不支持替换小箭头
- 无下拉箭头的SELECT下拉选框
- 18. JAVA 图形界面 Part 2(JTextComponent、事件处理、单选按钮、复选框、列表框、下拉列表框、菜单组件、文件选择) ----- 学习笔记
- linux 基础命令
- 镜头知识
- 何还报这样的错误
- WINCE6.0+S3C6410基于SD卡启动
- Ajax.net 用法
- java IP地址,端口校验+下拉菜单选框监听事件+模拟QQ发送按钮旁的小箭头功能
- 织梦工作日志
- 让人抓狂的win7系统权限 由failed installing tomcat6 service 引发的烦恼
- IBM LAS SYSTEM( 5 )——Zones
- 获取gridviewrow索引值的方法。。。
- OpenNMS全接触-OpenNMS介绍(二)
- const详解
- 信息架构的设计思路
- 修改表空间大小和自动扩展