Ich habe eine Zeichenfolge, die die Daten aus einem Jtextfield erhält, und dann unterteile ich diese Daten in 3 Buchstaben in drei Zeichenfolgen (String erste, zweite, dritte)Ausnahme funktioniert nicht (zeigt die Nachricht JOptionPane nicht an)
try {
String text,first,second,third,result;
Swing get = new Swing();
text = get.getMyText();
first = text.substring(0,1);
second = text.substring(1,2);
third = text.substring(2,3);
result = first + third + second;
if(text.isEmpty) {
throw new Exception();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Empty","....",JOptionPane.ERROR_MESSAGE);
}
ich diese seltsame Nachricht aus dem System anstelle der JOptionPane Nachricht:
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
jede Ahnung von dem, was ich hier vermissen?
zu Ihrer Information, ich habe die unten als auch versucht, aber auch immer noch die gleichen Fehler
if(first.isEmpty() || second.isEmpty() || third.isEmpty()) {
// my message
}
meine Swing-Klasse wie folgt lautet:
public class Swing {
// second line of the frame
private static JFrame window; // creating the frame
private static JTextField text;
// setting the frame
/**
* @wbp.parser.entryPoint
*/
public void Run() {
window = new JFrame("Tool");
window.setResizable(false);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().setBackground(new Color(230, 230, 250));
window.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
window.getContentPane().isOpaque();
window.getContentPane().setLayout(null);
// the textfield
text = new JTextField();
text.setHorizontalAlignment(SwingConstants.CENTER);
text.setForeground(Color.BLUE);
text.setFont(new Font("David", Font.PLAIN, 20));
text.setColumns(10);
text.setBounds(504, 11, 149, 20);
window.getContentPane().add(text);
// adding the button from the other class (MyBtn)
MyBtn addBTN = new MyBtn();
window.getContentPane().add(addBTN.run());
// setting the frame
window.setVisible(true);
window.setSize(750, 500);
window.setLocationRelativeTo(null);
}
// preparing the getters for the input
public String getText() {
return text.getText();
}
Hinweis: Sie wollen, dass wir unsere Zeit verbringen, Ihnen zu helfen; Also: Bitte nehmen Sie sich etwas Zeit, um das so einfach wie möglich zu machen. Das beginnt mit korrekt formatierten Codebeispielen. Und, Randnotiz: Ihre Variablennamen sind nicht hilfreich. Sie sagen nicht viel, worum es in dem Objekt wirklich geht. erster, zweiter, dritter ... was? Und worum geht es in der Klasse "Swing"? Dieser Name verwirrt nur Leser! Und Hinweis Nr. 2: Solche Probleme können sehr oft durch einfaches Hinzufügen von Trace-Anweisungen gelöst werden. Wenn Sie Ihre Textzeichenfolge direkt nach dem Abrufen gedruckt hätten, hätten Sie sich die Zeit für das Verfassen Ihrer Frage sparen können. – GhostCat
Java-GUIs müssen mit verschiedenen Betriebssystemen, Bildschirmgrößen, Bildschirmauflösungen usw. arbeiten, wobei verschiedene PLAFs in verschiedenen Ländern verwendet werden. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). –