JOptionPane maximale Zeichen einstellen

IAmAWard

Mitglied
Hey Leute,
Habe ein kleines vllt. auch größeres Problem. Ich schreibe gerade ein Programm was schon etwas umfassender ist und als Übung dient allerdings komme ich gerade nicht weiter. Ich habe einen Button mit welchem man ein neues File erstellen soll und man dann dort den jeweiligen Namen des Files eingibt. Ich hätte allerdings gerne dass man maximal 8 Zeichen eingeben kann und zwar so dass sobald man ein neuntes eingibt dieses gelöscht wird. Habe sehr sehr lange Google durchstöbert aber nichts gefunden weshalb ich einfach ein eigenes "JOptionPane.showInputDialog" erstellen will und dort mittels KeyListener maximal 8 Zeichen erlaube. Dies Funktioniert auch nur weiß ich nicht wie ich das so wie beim JOptionPane mache, dass ich String eingabe = InuputPane.start(); und dann wirklich erst der Text übergeben wird, wenn ich de OK-Button drücke und nicht direkt und somit immer null käme.

Hier code vom InputPane

Java:
public class InputPane extends JDialog implements KeyListener, ActionListener {
   
    //Attrbute
    public JTextField textField;
    public JButton okButton;
    public JButton cancelButton;
    private JLabel label;
    private JPanel panel;
    private JFrame frame;
   
    private String back;
   
    private boolean cancel;
    private boolean ok;
   
    private Class<?> klasse;
    //Konstruktor
    public InputPane(String text, String title, Class<?> klasse) {
        this.klasse = klasse;
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        panel = new JPanel();
        textField = new JTextField();
        okButton = new JButton("OK");
        cancelButton = new JButton("Cancel");
        label = new JLabel(text);
       
        this.setTitle(title);
        this.add(this.panel);
        this.setSize(300, 150);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setLocationRelativeTo(frame);
        this.setAlwaysOnTop(this.isAlwaysOnTopSupported());

       
       
        this.panel.setLayout(null);
       
        this.textField.setSize(180, 20);
        this.textField.setBounds(40, 40, 220, 25);
       
        this.label.setSize(180, 20);
        this.label.setBounds(40, 10, 220, 25);
       
        this.okButton.addActionListener(this);
        this.okButton.setBounds(40, 80, 100, 30);
       
        this.cancelButton.addActionListener(this);
        this.cancelButton.setBounds(160, 80, 100, 30);
       
        this.panel.add(this.textField);
        this.panel.add(this.cancelButton);
        this.panel.add(this.okButton);
        this.panel.add(this.label);
    }
   
    //Methoden
    public void start() {
        this.setVisible(true);
        this.back = null;
    }
    public String getText() {
        System.out.println(this.back);
        return this.back;
    }
   
    //KeyListener
    @Override
    public void keyPressed(KeyEvent e) {}

    @Override
    public void keyReleased(KeyEvent e) {}

    @Override
    public void keyTyped(KeyEvent e) {}

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == this.cancelButton) {
            this.cancel = true;
            this.dispose();
        }
        if (e.getSource() == this.okButton) {
            this.ok = true;
            this.dispose();
            this.back = textField.getText();
        }
    }
   
   
}

Hier Code vom aufruf

Code:
if (v1.istNew(e.getSource())) {
            boolean weiter = true;
            File saveFile = new File("" + m1.getSaveFile());
            String a = m1.crypt("[\n" + m1.toString() + "\n]", 1);
            if (a.equals(this.vergleich)) { //File wäre "Leer" (Startwerte)
            } else {    //Passiert wenn ein File beim schließen/neues LADEN gespeichert werden soll
                if (!(a.equals(m1.readFile(saveFile)))) {   
                    //Nur wenn das File nicht schon unter dem Namen die gleichen Einträge hat
                    JLabel label = new JLabel("<html>File is not saved yet!<br><center><b>Save?</b></center></html>", JLabel.CENTER);
                    int check = JOptionPane.showOptionDialog(this.v1, label, "Save", JOptionPane.YES_NO_CANCEL_OPTION,
                            JOptionPane.PLAIN_MESSAGE, null, new String[]{"Yes","No","Cancel"}, "Yes");
                    if(check==0) {
                        m1.save();
                    } else if (check == 1) {
                    } else if (check == 2 || check == -1) {    //Bei Cancel mit FileChooser nicht öffnen
                        weiter = false;
                    }
                }
            }
            this.inputPanel = new InputPane("Name of the new File", "File-Name", this.getClass());
           
            while (weiter) {
                this.inputPanel.start();
                String eingabe = this.inputPanel.getText();
                if (eingabe != null && !eingabe.equals("")) {
                   
                    File file = new File(dir + "/saves/" + eingabe+".acc");
                    if (!(Files.exists(Paths.get(file.getPath())))) {
                        this.m1.setSaveFile(file);
                        this.m1.setDefaultWerte();
                        this.m1.save();
                        v1.setButtonsEnabled(true);
                        v1.refresh();
                        break;
                    }
                } else break;
            }
           
        }




PS. wie kann ich nem JDialog ein Parent geben so wie ne JOptionPane?
PPS. gibt es online einen Quelltext vom JOptionPane? :/
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    19,9 KB · Aufrufe: 18

Robat

Top Contributor
Hier mal ein Beispiel, wie du dir so eine showAndWait() Methode bauen kannst. Ist an sich recht simpel, man muss den Dialog nur "modal" machen und dann wird alles nach setVisible(true) erst ausgeführt, wenn der Dialog geschlossen wurde.
Den Owner kannst du um Konstruktor übergeben.
Java:
public class MyDialog extends JDialog {
    private String inputText;

    public MyDialog(JFrame owner, String title) {
        super(owner, title, true); // true -> Dialog ist modal
        this.inputText = "";

        setSize(300,300);

        JPanel content = new JPanel();
        JTextField jtf = new JTextField(20);
        content.add(jtf);

        JButton btn = new JButton("Ok");
        btn.addActionListener(e -> {
            inputText = jtf.getText();
            dispose();
        });
        content.add(btn);
        add(content);
    }

    public String showAndWait() {
        setVisible(true);
        return inputText; // wird erst ausgeführt, wenn der Dialog geschlossen wird
    }
}
Anwenden kannst du das ganze dann wie folgt:
Java:
MyDialog d = new MyDialog(frame, "Bla");
String input = d.showAndWait();
PPS. gibt es online einen Quelltext vom JOptionPane? :/
Hier zB.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
J JOptionPane return bei "Abbrechen" AWT, Swing, JavaFX & SWT 13
R JOptionPane schließt sich nicht wieder AWT, Swing, JavaFX & SWT 2
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
O Timer in JOptionPane anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing JOptionPane import AWT, Swing, JavaFX & SWT 5
R Swing JOptionPane Sprache Ändern AWT, Swing, JavaFX & SWT 4
O JOptionPane mit JFileDialog AWT, Swing, JavaFX & SWT 5
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
N Swing Mocken von JOptionPane im JUnit-Test AWT, Swing, JavaFX & SWT 3
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JOptionPane AWT, Swing, JavaFX & SWT 1
T JOptionPane Dialog plus Rechnung ausgeben AWT, Swing, JavaFX & SWT 1
snipesss Hintergrundbild in JOptionPane.showInputDialog? AWT, Swing, JavaFX & SWT 4
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
A Swing JOptionPane.showConfirmDialog, EventQueue wird weiter abgearbeitet AWT, Swing, JavaFX & SWT 2
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T JOptionPane Enter = Okay AWT, Swing, JavaFX & SWT 3
OnDemand JOptionPane AWT, Swing, JavaFX & SWT 2
B JFrame wie JOptionPane.showMessageDialog() AWT, Swing, JavaFX & SWT 2
D Swing JOptionPane verschwindet beim 2. Aufruf einfach so?? AWT, Swing, JavaFX & SWT 2
L Swing JOptionPane Verwirrung AWT, Swing, JavaFX & SWT 13
P JOptionPane input und show Message Dialog AWT, Swing, JavaFX & SWT 5
I javascript in javaprogramm JOptionpane -> haengt (embedded Interpreter) AWT, Swing, JavaFX & SWT 2
S JOptionPane sinnvoll benutzen AWT, Swing, JavaFX & SWT 7
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
D JOptionPane.QUESTION_MESSAGE Fett darstellen AWT, Swing, JavaFX & SWT 4
N JOptionPane als JWindow AWT, Swing, JavaFX & SWT 2
M Swing Änderungen eines TextFelds und JOptionPane AWT, Swing, JavaFX & SWT 5
O JOptionPane.showMessageDialog mit automatischem Zeilenumbruch AWT, Swing, JavaFX & SWT 9
E Swing setCaretPosition für ein JTextField in einem JOptionPane AWT, Swing, JavaFX & SWT 3
H Swing JOptionPane.showConfirmMessage() wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
R JOptionPane.YES_NO_CANCEL_OPTION im SaveDialog verwenden AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
R Eingegebenen Text in JOptionPane in andere Klasse weitergeben AWT, Swing, JavaFX & SWT 2
M JOptionPane.showInputDialog abbrechen abfangen? AWT, Swing, JavaFX & SWT 2
Weiti JOptionPane aus einer von JPanel abgeleiteten Klasse aufrufen AWT, Swing, JavaFX & SWT 3
N OK-Button in JOptionPane ansprechen AWT, Swing, JavaFX & SWT 5
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
G Swing Meldung mit joptionpane information message AWT, Swing, JavaFX & SWT 22
B Swing JOptionPane ohne beep AWT, Swing, JavaFX & SWT 6
A Swing \t im JOptionPane AWT, Swing, JavaFX & SWT 2
G JOptionPane.showConfirmDialog size problem AWT, Swing, JavaFX & SWT 3
S JOptionPane - InitialValue AWT, Swing, JavaFX & SWT 9
S JOptionPane resultat kriegen AWT, Swing, JavaFX & SWT 7
ABstraCT JOptionPane setSize ? AWT, Swing, JavaFX & SWT 6
S JOptionPane.showInputDialog JList erzwingen? AWT, Swing, JavaFX & SWT 4
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
G JOptionPane.showInputDialog(): Texteingabe und Fokus AWT, Swing, JavaFX & SWT 3
A Array wird im JOptionPane mehrfach ausgegeben AWT, Swing, JavaFX & SWT 3
A JOptionPane soll auf Enter reagieren AWT, Swing, JavaFX & SWT 4
F JOptionPane.showMessageDialog AWT, Swing, JavaFX & SWT 2
M JOptionPane.showMessageDialog() mit printStackTace() ? AWT, Swing, JavaFX & SWT 7
QDog JTabbedPane JOptionPane AWT, Swing, JavaFX & SWT 2
K Tabelle nach JOptionPane updaten AWT, Swing, JavaFX & SWT 5
A JOptionPane; CLOSED_OPTION ausschalten AWT, Swing, JavaFX & SWT 5
A Probleme mit einer JOptionPane in einem jar-File AWT, Swing, JavaFX & SWT 14
Z JOptionPane mit einer Methode in dem Vordergrund setzen? AWT, Swing, JavaFX & SWT 6
J JOptionPane Tabs AWT, Swing, JavaFX & SWT 3
G JOptionPane mit andere Farbe AWT, Swing, JavaFX & SWT 8
B Ein JOptionPane.showMessageDialog(.) AWT, Swing, JavaFX & SWT 6
G komplexes JOptionPane (oder doch JFrame?) AWT, Swing, JavaFX & SWT 2
G JOptionPane mit link zum anklicken AWT, Swing, JavaFX & SWT 4
G JOptionPane AWT, Swing, JavaFX & SWT 6
N Probleme mit eigenem JOptionPane AWT, Swing, JavaFX & SWT 2
A Schließen eines JOptionPane.showConfirmDialog AWT, Swing, JavaFX & SWT 6
B JOptionPane.showInputDialog mit drei ComboBoxen nebeneinande AWT, Swing, JavaFX & SWT 2
S JTextField und JOptionPane - Zeicheneingabe beschränken AWT, Swing, JavaFX & SWT 3
G JOptionPane AWT, Swing, JavaFX & SWT 3
eskimo328 JOptionPane ohne CANCEL Button AWT, Swing, JavaFX & SWT 2
M JOptionPane.showConfirmDialog. Frage zur Cancel_Option AWT, Swing, JavaFX & SWT 2
L JOptionPane AWT, Swing, JavaFX & SWT 4
P JComboBox.addItem erzeugt Layoutproblem mit JOptionPane AWT, Swing, JavaFX & SWT 2
J eigenes JOptionPane ? AWT, Swing, JavaFX & SWT 2
J JOptionPane Buttons AWT, Swing, JavaFX & SWT 4
G Eingabe auslesen mit JOptionPane AWT, Swing, JavaFX & SWT 2
vogella JOptionPane in den Vordergrund bringen AWT, Swing, JavaFX & SWT 2
padde479 JOptionPane AWT, Swing, JavaFX & SWT 3
C Probleme beim Serialisieren mit JOptionPane AWT, Swing, JavaFX & SWT 12
S JOptionPane: methode ShowConfirmDialog ist undefiniert AWT, Swing, JavaFX & SWT 2
S JOptionPane und eine feste Zeilenbreite. AWT, Swing, JavaFX & SWT 4
S JProgressBar zu JOptionPane hinzufügen. AWT, Swing, JavaFX & SWT 8
G JOptionPane AWT, Swing, JavaFX & SWT 3
B Eingabeüberprüfung beim JOptionPane.showInputDialog() AWT, Swing, JavaFX & SWT 3
D Mit JOptionPane einen Link darstellen AWT, Swing, JavaFX & SWT 10
S JOptionPane.showMessageDialog(.) AWT, Swing, JavaFX & SWT 23
S Ein frage zu JOptionPane AWT, Swing, JavaFX & SWT 2
H wie frage ich mehrere buttons von joptionpane ab AWT, Swing, JavaFX & SWT 4
G Link in JoptionPane? AWT, Swing, JavaFX & SWT 3
N JOptionPane mit Html Tags AWT, Swing, JavaFX & SWT 5
B Focus in JOptionPane AWT, Swing, JavaFX & SWT 2
M Ausgabe mit JOptionPane AWT, Swing, JavaFX & SWT 6
U kleiner-Zeichen JEditorPanel (war: JOptionPane) AWT, Swing, JavaFX & SWT 5
S JOptionPane in den Bildschirmvordergrund bringen AWT, Swing, JavaFX & SWT 3
F JOptionPane soll nicht auf ENTER reagieren AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben