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
Hier Code vom aufruf
PS. wie kann ich nem JDialog ein Parent geben so wie ne JOptionPane?
PPS. gibt es online einen Quelltext vom JOptionPane? :/
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? :/