您的位置:首页 > 编程语言 > Java开发

java IP地址,端口校验+下拉菜单选框监听事件+模拟QQ发送按钮旁的小箭头功能

2013-04-14 00:01 501 查看

java IP地址,端口校验+下拉菜单选框监听事件+模拟QQ发送按钮旁的小箭头功能

分类:
小记 2011-11-02 13:20
327人阅读 评论(0)
收藏
举报

javaqqstringbuttondatabasejdbc

[java]
view plaincopy

[java]
view plaincopy

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);

}
});

}

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: