Vorgefertigtes JTextField für IP Adresse?

Status
Nicht offen für weitere Antworten.

Pago83

Bekanntes Mitglied
Hallo,

ich bin auf der Suche nach einem Textfeld für eine IP Adresse, das wie folgt aussieht:

internetprotokoll1.png


Gibt es dafür eine bereits gefertigte Komponente oder hat jemand so etwas schon einmal realisiert?

Ich möchte genau das Handling dieses Feldes haben, sprich:

1. Die Punkte sind schon gesetzt zwischen den einzelnen Blöcken

2. Gibt man 3 Ziffern ein, so wird in den nächsten Block gesprungen

3. Mit Tab soll man ebenfalls in den nächsten Block gelangen

MfG Pago
 

Pago83

Bekanntes Mitglied
Hab ich,

konnte aber weder unter "IP" noch unter "adresse" etwas finden. Wenn du mir das richtige Stichwort sagst, suche ich gerne noch einmal ;-)
 

The_S

Top Contributor
Ach verdammt ... ich liebe die kaputte Forensuche ... kein Treffer für "IP" ... kann man das net ma fixen? Ich schau mal, ob ich den einen oder anderen Fred trotzdem finde.
 

Pago83

Bekanntes Mitglied
Da werden weder die Punkte gesetzt noch irgendetwas meiner geforderten Punkte.

Eine Überprüfung auf eine gültige IP Adresse habe ich selber per RegEx.

Ich erläutere nochmal genau was ich suche:

1. Ein Textfeld, dass bereits im nicht editierten Zustand die Punkte zwischen den einzelnen Blöcken einer IP Adresse beinhaltet

2. Durch Tab soll man in den nächsten Block springen können

3. Nach Eingabe von 3 Ziffern, soll der Cursor automatisch in den nächsten Block springen
 

The_S

Top Contributor
Naja, du wirst nicht drum rum kommen sowas selber zu schreiben. Der Thread war lediglich als kleine Starthilfe dafür gedacht.
 

Pago83

Bekanntes Mitglied
Selber schreiben lohnt sich für die Geschichte nicht, deswegen wollte ich ja wissen, ob sich schon einmal jemand mit der Problematik beschäftigt hat, trotzdem danke ;-)
 
B

bygones

Gast
obs schonmal jemand in der weiten welt realisiert hat... keine ahnung - googlen.
was vorgefertigtes von java gibt es nicht.

Musst du selber schreiben - ein Textfeld mit diversen Listener.....
 

Pago83

Bekanntes Mitglied
So, habe nun im Netz ein "Teillösung" gefunden, die ich etwas bearbeitet habe. Hier mal der bisherige Code:

Code:
package de.repower.lvs.proxyipparser;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.StringTokenizer;

import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;

public class IpFormatter extends JPanel
{
    private static final long serialVersionUID = -2747869952472731549L;

    public IpFormatter()
    {
        setBorder(new LineBorder(UIManager.getColor("Table.selectionBackground")));
        setBackground(Color.WHITE);
        setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
        setSize(120, 20);

        ipField1.setPreferredSize(new Dimension(25, 18));
        ipField1.setBorder(null);
        ipField1.setHorizontalAlignment(SwingConstants.CENTER);
        add(ipField1);

        separator1.setBorder(null);
        separator1.setForeground(Color.LIGHT_GRAY);
        separator1.setFont(new Font("Dialog", Font.BOLD, 12));
        separator1.setFocusable(false);
        add(separator1);

        ipField2.setPreferredSize(new Dimension(25, 18));
        ipField2.setBorder(null);
        ipField2.setHorizontalAlignment(SwingConstants.CENTER);
        add(ipField2);

        separator2.setBorder(null);
        separator2.setForeground(Color.LIGHT_GRAY);
        separator2.setFont(new Font("Dialog", Font.BOLD, 12));
        separator2.setFocusable(false);
        add(separator2);

        ipField3.setPreferredSize(new Dimension(25, 18));
        ipField3.setBorder(null);
        ipField3.setHorizontalAlignment(SwingConstants.CENTER);
        add(ipField3);

        separator3.setBorder(null);
        separator3.setForeground(Color.LIGHT_GRAY);
        separator3.setFont(new Font("Dialog", Font.BOLD, 12));
        separator3.setFocusable(false);
        add(separator3);

        ipField4.setPreferredSize(new Dimension(25, 18));
        ipField4.setBorder(null);
        ipField4.setHorizontalAlignment(SwingConstants.CENTER);
        add(ipField4);

        SymFocus aSymFocus = new SymFocus();
        ipField1.addFocusListener(aSymFocus);
        ipField2.addFocusListener(aSymFocus);
        ipField3.addFocusListener(aSymFocus);
        ipField4.addFocusListener(aSymFocus);
        SymKey aSymKey = new SymKey();
        ipField1.addKeyListener(aSymKey);
        ipField2.addKeyListener(aSymKey);
        ipField3.addKeyListener(aSymKey);
        ipField4.addKeyListener(aSymKey);
    }

    JTextField ipField1   = new JTextField();
    JTextField ipField2   = new JTextField();
    JTextField ipField3   = new JTextField();
    JTextField ipField4   = new JTextField();

    JTextField separator1 = new JTextField(".");
    JTextField separator2 = new JTextField(".");
    JTextField separator3 = new JTextField(".");

    public boolean setIp(String newIp)
    {
        StringTokenizer st = new StringTokenizer(newIp, ".");
        if (st.countTokens() != 4)
        {
            clear();
            return false;
        }
        String[] comps = new String[4];
        for (int i = 0; i < 4; i++)
        {
            try
            {
                comps[i] = st.nextToken();
                int test = Integer.parseInt(comps[i]);
                if (test < 0 || test > 255)
                {
                    clear();
                    return false;
                }
            }
            catch (Exception ex)
            {
                clear();
                return false;
            }
        }
        ipField1.setText(comps[0]);
        ipField2.setText(comps[1]);
        ipField3.setText(comps[2]);
        ipField4.setText(comps[3]);
        return true;
    }

    public String getIp()
    {
        if (ipField1.getText().length() != 0 && ipField2.getText().length() != 0 && ipField3.getText().length() != 0
            && ipField4.getText().length() != 0)
        {
            String nip = ipField1.getText() + "." + ipField2.getText() + "." + ipField3.getText() + "."
                         + ipField4.getText();
            return nip;
        }
        else
            return null;
    }

    public void clear()
    {
        ipField1.setText("");
        ipField2.setText("");
        ipField3.setText("");
        ipField4.setText("");
    }

    class SymFocus extends FocusAdapter
    {
        public void focusGained(FocusEvent event)
        {
            Object object = event.getSource();
            if (object == ipField1)
                ip1_focusGained(event);
            else if (object == ipField2)
                ip2_focusGained(event);
            else if (object == ipField3)
                ip3_focusGained(event);
            else if (object == ipField4)
                ip4_focusGained(event);
        }
    }

    void ip1_focusGained(FocusEvent event)
    {
        ipField1.selectAll();
    }

    void ip2_focusGained(FocusEvent event)
    {
        ipField2.selectAll();
    }

    void ip3_focusGained(FocusEvent event)
    {
        ipField3.selectAll();
    }

    void ip4_focusGained(FocusEvent event)
    {
        ipField4.selectAll();
    }

    class SymKey extends KeyAdapter
    {
        public void keyTyped(KeyEvent event)
        {
            Object object = event.getSource();
            if (object == ipField1)
                ip1_keyTyped(event);
            else if (object == ipField2)
                ip2_keyTyped(event);
            else if (object == ipField4)
                ip4_keyTyped(event);
            else if (object == ipField3)
                ip3_keyTyped(event);
        }
    }

    void ip1_keyTyped(KeyEvent event)
    {
        processKey(ipField1, event);
    }

    void ip2_keyTyped(KeyEvent event)
    {
        processKey(ipField2, event);
    }

    void ip3_keyTyped(KeyEvent event)
    {
        processKey(ipField3, event);
    }

    void ip4_keyTyped(KeyEvent event)
    {
        processKey(ipField4, event);
    }

    public void processKey(JTextField tf, KeyEvent event)
    {
        int asc = event.getKeyChar();
        if (asc == 46)
        {
            if (tf.getText().length() > 0)
            {
                if (tf.equals(ipField1))
                    ipField2.requestFocus();
                else if (tf.equals(ipField2))
                    ipField3.requestFocus();
                else if (tf.equals(ipField3))
                    ipField4.requestFocus();
            }
            event.consume();
        }
        else if (asc > 47 && asc < 58)
        {
            if (tf.getText().length() == 2)
            {
                if (tf.equals(ipField1))
                    ipField2.requestFocus();
                else if (tf.equals(ipField2))
                    ipField3.requestFocus();
                else if (tf.equals(ipField3))
                    ipField4.requestFocus();
            }
            if (tf.equals(ipField4) && tf.getText().length() == 3)
                event.consume();
        }
        else if (asc == 8)
        {
            if (tf.getText().length() == 0)
            {
                event.consume();
                if (tf.equals(ipField4))
                {
                    ipField3.requestFocus();
                    ipField3.setCaretPosition(ipField3.getText().length());
                }
                if (tf.equals(ipField3))
                {
                    ipField2.requestFocus();
                    ipField2.setCaretPosition(ipField2.getText().length());
                }
                if (tf.equals(ipField2))
                {
                    ipField1.requestFocus();
                    ipField1.setCaretPosition(ipField1.getText().length());
                }
            }
        }
        else
        {
            event.consume();
        }
    }
}

Leider wird bisher der gültige Bereich der IP Adresse nicht überprüft, d.h., ob ein Block <=255 ist.

Kann mir jemand sagen, wie ich eine solche Überprüfung für ein Textfeld auszusehen hat?

Stelle mir das in etwa so vor: Versucht man eine Zahl >255 einzugeben, so wird die Eingabe nicht akzeptiert!

Bin für Tipps sehr dankbar.

MfG Pago
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
S Möglichkeit, mit g.draw etwas vor ein JTextfield zu „zeichnen“? Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E JButton und JTextField Java Basics - Anfänger-Themen 1
J JTextField Bezeichnung als Variable Java Basics - Anfänger-Themen 3
M Von einem JTextField Doublewerte entgegennehmen Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
D Klassen JTextField wird nur zu 50% angezeigt. Java Basics - Anfänger-Themen 15
F JTextField Kursiv und Fett machen Java Basics - Anfänger-Themen 4
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Interface JTextField: Action mit Enter ausführen Java Basics - Anfänger-Themen 16
K Methoden JTExtField mit Array erzeugen Java Basics - Anfänger-Themen 13
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
J Erste Schritte Wert aus JTextField zurückgeben Java Basics - Anfänger-Themen 6
F Aus einer anderen Klasse auf ein JTextField zugreifen Java Basics - Anfänger-Themen 17
P Cursor in JTextField setzen Java Basics - Anfänger-Themen 11
F Variablen JTextField-Inhalt kann nicht mit String abgeglichen werden Java Basics - Anfänger-Themen 2
F Interface JTextField am Anfang unsichtbar o_o Java Basics - Anfänger-Themen 3
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
K OOP Mit anderer Klasse auf JTextField zugreifen Java Basics - Anfänger-Themen 5
Liondary JTextfield Java Basics - Anfänger-Themen 8
W JTextField-Objekt liest Umlaute mit falschen Zeichen ein Java Basics - Anfänger-Themen 5
Z Fürge nur ein JTextField ein und danach wird nichts mehr angezeigt Java Basics - Anfänger-Themen 3
S JTextField zu ArrayList hinzufügen Java Basics - Anfänger-Themen 3
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
Z JTextField - getText() Methode abbrechen? Java Basics - Anfänger-Themen 8
P jTextField - Auslesen, in Variablen speichern, eingeben... Java Basics - Anfänger-Themen 7
J Methoden JTextArea auslesen und in JTextfield ausgeben Java Basics - Anfänger-Themen 13
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
U Inhalt von JTextfield an andere Klasse weitergeben Java Basics - Anfänger-Themen 13
I JTextfield[] innerhalb eines Itemlistener aufrufen Java Basics - Anfänger-Themen 2
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
S Verhalten von JTextField in einem JTabbedPane (Register) Java Basics - Anfänger-Themen 6
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
G JTextField, DocumentListener, Fehler bei setText() Java Basics - Anfänger-Themen 3
S Input/Output GUI Eingabe in JTextfield in Variable speichern Java Basics - Anfänger-Themen 7
C JTextField füllen Java Basics - Anfänger-Themen 5
C jtextfield und jtable Java Basics - Anfänger-Themen 34
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
K Encoding von JTextfield Java Basics - Anfänger-Themen 2
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
P Klassen JTextfield aus anderer Klasse herausfüllen Java Basics - Anfänger-Themen 12
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
M Datumsformat in JTextfield Java Basics - Anfänger-Themen 10
S JTextField nervt rum... Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
D Durch Button klick wert in JTextField einfügen Java Basics - Anfänger-Themen 5
J Verknüpfung von JButton to JTextField Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
C Problem mit JTextField Java Basics - Anfänger-Themen 8
A Klassen JTextField eigtl leer aber es werden Methoden ect. angezeigt Java Basics - Anfänger-Themen 9
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
L JTextField auslesen mit getText() wie abspeichern? Java Basics - Anfänger-Themen 2
D jtextField Ausgabe double Java Basics - Anfänger-Themen 4
D JTextField verwenden ohne Eingabe einer Variable Java Basics - Anfänger-Themen 4
J GUI - JTextField Anordnung Java Basics - Anfänger-Themen 2
S nur Buchstaben in JTextField Java Basics - Anfänger-Themen 3
S JTextfield Auswertung mit FocusListener Java Basics - Anfänger-Themen 7
M Hilfe JTextfield Ergebnis Java Basics - Anfänger-Themen 2
B GUI- JTextField - Übung Java Basics - Anfänger-Themen 5
M OOP Wie greife ich auf JTextField zu? Java Basics - Anfänger-Themen 2
P Eingabe aus JTextField/Area an eine andere Klasse übergeben. Java Basics - Anfänger-Themen 2
M Input/Output JFrame mit JButton und JTextfield Java Basics - Anfänger-Themen 114
F GUI JTextField aktualisieren Java Basics - Anfänger-Themen 3
B jTextField bei Enter eingabe absenden? Java Basics - Anfänger-Themen 2
S JTextField leeren ohne setText("")? Java Basics - Anfänger-Themen 3
A fire button on JTextField Enter Java Basics - Anfänger-Themen 2
G JTextField() Anzeige - if-Anweisungen Java Basics - Anfänger-Themen 2
R Erste Schritte codecopieren von Editor nach Eclipse / JTextField Java Basics - Anfänger-Themen 4
L Zeichen in jTextField markieren Java Basics - Anfänger-Themen 2
M Text auf JTextField auslesen per Button Java Basics - Anfänger-Themen 4
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
L Null Pointer Exception bei Focus Event bei einem JTextField Java Basics - Anfänger-Themen 2
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
H Prüfen welches JTextfield ausgewählt/selektiert ist? Java Basics - Anfänger-Themen 7
B Input/Output jTextField - KeyEvent - Zeichen soll nicht erscheinen Java Basics - Anfänger-Themen 6
D JPasswordField - JTextField Java Basics - Anfänger-Themen 5
J JTextfield mit Enter leeren Java Basics - Anfänger-Themen 3
H JtextField auslesen und in JLable einfuegen Java Basics - Anfänger-Themen 7
D JTextField anstatt Jbuttons Java Basics - Anfänger-Themen 9
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
S mit eigener Klasse JTextField ändern Java Basics - Anfänger-Themen 3
M JTextField durch Button auslösen Java Basics - Anfänger-Themen 9
J JLabel mit Hilfe von JTextfield benennen Java Basics - Anfänger-Themen 7
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
M JTextField Java Basics - Anfänger-Themen 7
O JTextField Schriftgröße ändern Java Basics - Anfänger-Themen 1
J Nur ein Komma in JTextField zulassen... Java Basics - Anfänger-Themen 9
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
S JTextField an SQL mit -> Kommazahlen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben