import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.StringTokenizer;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;public class IpTextPanel extends JPanel...{ /** *//** * init a IpTextPanel instance * @param frame parent JFrame */ public IpTextPanel(JFrame frame)...{ super(); this.frame = frame; seg1 = new IpTextField(3,frame,1,255); seg2 = new IpTextField(3,frame,0,255); seg3 = new IpTextField(3,frame,0,255); seg4 = new IpTextField(3,frame,1,255); setLayout(new FlowLayout(FlowLayout.CENTER,3,3)); add(seg1); add(new JLabel(".")); add(seg2); add(new JLabel(".")); add(seg3); add(new JLabel(".")); add(seg4); } /** *//** * set an ip address,it won't check the ip is valid or not * @param ip address type */ public void setText(String ip)...{ StringTokenizer st = new StringTokenizer(ip,"."); seg1.setText(st.nextToken()); seg2.setText(st.nextToken()); seg3.setText(st.nextToken()); seg4.setText(st.nextToken()); } /** *//** * clear the ip address */ public void clear()...{ seg1.setText(""); seg2.setText(""); seg3.setText(""); seg4.setText(""); } /** *//** * get the ip address content * @return ipaddress String value */ public String getText()...{ if(seg1.getText().equals("")||seg2.getText().equals("")||seg3.getText().equals("")||seg4.getText().equals(""))...{ JOptionPane.showMessageDialog(frame,"请输入完整","WARNING",JOptionPane.WARNING_MESSAGE); return null; }else...{ return Integer.parseInt(seg1.getText().trim())+"."+Integer.parseInt(seg2.getText().trim())+"."+Integer.parseInt(seg3.getText().trim())+"."+Integer.parseInt(seg4.getText().trim()); } } private JFrame frame = null; private IpTextField seg1 = null; private IpTextField seg2 = null; private IpTextField seg3 = null; private IpTextField seg4 = null; public static void main(String[] args)...{ JFrame frame = new JFrame(); frame.getContentPane().setLayout(new BorderLayout()); final IpTextPanel pane = new IpTextPanel(frame); frame.getContentPane().add(pane,BorderLayout.CENTER); JPanel buttonPane = new JPanel(); JButton getText = new JButton("getText"); JButton setText = new JButton("setText"); buttonPane.setLayout(new FlowLayout(FlowLayout.CENTER,3,3)); buttonPane.add(getText); buttonPane.add(setText); frame.getContentPane().add(buttonPane,BorderLayout.SOUTH); frame.setLocation(400,300); frame.setSize(400,300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); getText.addActionListener(new ActionListener()...{ public void actionPerformed(ActionEvent e) ...{ System.out.println(pane.getText()); } }); setText.addActionListener(new ActionListener()...{ public void actionPerformed(ActionEvent e) ...{ pane.setText("15.0.33.499"); //pane.clear(); } }); } }//************************************************************************************************import java.awt.Component;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JTextField;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.PlainDocument;public class IpTextField extends JTextField ...{ private int min = 0;// min value private int max = 255;// max value IpSegDocument document = null; public IpTextField(int columns, JFrame frame, int min, int max) ...{ super(columns); this.min = min; this.max = max; setDocument(document = new IpSegDocument(frame, columns, min, max)); } public int getMax() ...{ return max; } public void setMax(int max) ...{ this.max = max; if (document != null) ...{ document.setMax(max); } } public int getMin() ...{ return min; } public void setMin(int min) ...{ this.min = min; if (document != null) ...{ document.setMin(min); } }}class IpSegDocument extends PlainDocument ...{ private int limit; private int min; private int max; Component parentComponent; public IpSegDocument(Component parentComponent, int limit, int min, int max) ...{ super(); this.parentComponent = parentComponent; this.limit = limit; this.min = min; this.max = max; } /** *//** * offset 输入位置 str 输入字符串.有多个输入的情况,如粘贴剪贴板中的内容 attr 总是null */ public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException ...{ if (str == null) ...{ return; } if (((getText(0, getLength()).trim()).length() + str.length()) <= limit) ...{ char[] upper = str.toCharArray(); int length = 0; for (int i = 0; i < upper.length; i++) ...{ if (upper[i] >= '0' && upper[i] <= '9') ...{ upper[length++] = upper[i]; } } String valueStr = getText(0, offset) + new String(upper, 0, length) + getText(offset, getLength() - offset).trim(); if (!valueStr.equals("")) ...{ int value = Integer.parseInt(valueStr.trim()); if (value >= min && value <= max) ...{ super.remove(0, getLength()); super.insertString(0, String.valueOf(value), attr); } else ...{ if (parentComponent == null) ...{ parentComponent = JOptionPane.getRootFrame(); } JOptionPane.showMessageDialog(parentComponent, "非法输入", "WARNING", JOptionPane.WARNING_MESSAGE); super.remove(0, getLength()); } } } } public int getLimit() ...{ return limit; } public void setLimit(int limit) ...{ this.limit = limit; } public int getMax() ...{ return max; } public void setMax(int max) ...{ this.max = max; } public int getMin() ...{ return min; } public void setMin(int min) ...{ this.min = min; }}