Почему мое окно в Java (JFrame) вылетает, когда я дважды щелкаю JTextField?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему мое окно в Java (JFrame) вылетает, когда я дважды щелкаю JTextField?

Сообщение Anonymous »

Я написал эту небольшую программу для конкретной утилиты, еще не оптимизировал ее, но пока все работает как задумано, но когда я случайно дважды щелкаю по JTextField, происходит сбой, и я понятия не имею, почему. (JTextField находится в строке 62)

Код: Выделить всё

package smoothies;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.*;
import java.awt.*;

public class smoothies extends JFrame {

public smoothies(List smoothies) {
//setBackground(new Color());
setDefaultCloseOperation(3);
setSize(400,400);
setLayout(new BorderLayout(50,50));

JPanel lIng= new JPanel();
lIng.setLayout(new GridLayout(8,2));
ArrayList ingredients = new ArrayList();
// kelp,horse,grapes,apple,pepper,nectar,milk,cactus,potato,salt,butter,pumpkin,guts,fang,mango,egg
JCheckBox kelp = new JCheckBox("kelp");
ingredients.add(kelp);
JCheckBox horse = new JCheckBox("horse");
ingredients.add(horse);
JCheckBox grapes = new JCheckBox("grapes");
ingredients.add(grapes);
JCheckBox apple = new JCheckBox("apple");
ingredients.add(apple);
JCheckBox pepper = new JCheckBox("pepper");
ingredients.add(pepper);
JCheckBox nectar = new JCheckBox("nectar");
ingredients.add(nectar);
JCheckBox milk = new JCheckBox("milk");
ingredients.add(milk);
JCheckBox cactus = new JCheckBox("cactus");
ingredients.add(cactus);
JCheckBox potato = new JCheckBox("potato");
ingredients.add(potato);
JCheckBox salt = new JCheckBox("salt");
ingredients.add(salt);
JCheckBox butter = new JCheckBox("butter");
ingredients.add(butter);
JCheckBox pumpkin = new JCheckBox("pumpkin");
ingredients.add(pumpkin);
JCheckBox guts = new JCheckBox("guts");
ingredients.add(guts);
JCheckBox fang = new JCheckBox("fang");
ingredients.add(fang);
JCheckBox mango = new JCheckBox("mango");
ingredients.add(mango);
JCheckBox egg = new JCheckBox("egg");
ingredients.add(egg);
for(JCheckBox ing: ingredients) {
lIng.add(ing);
}

Button calculate = new Button("calculate");
JTextField result = new JTextField("hai :D");
result.setEditable(false);

calculate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("\n\n\n\n\n\n\n\n\n\n\n\nSMOOTHIES YOU CAN MAKE:");
for(List smoothie: smoothies) {
for(JCheckBox ing1: ingredients) {
if(smoothie.get(0).contains(ing1.getText()) && ing1.isSelected()) {
for(JCheckBox ing2: ingredients) {
if(smoothie.get(1).contains(ing2.getText()) && ing2.isSelected()) {
System.out.println(smoothie);
break;
}
}
}
}
}
}
});

Thread h = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
int p = 0;
for(List smoothie: smoothies) {
for(JCheckBox ing1: ingredients) {
if(smoothie.get(0).contains(ing1.getText()) && ing1.isSelected()) {
for(JCheckBox ing2: ingredients) {
if(smoothie.get(1).contains(ing2.getText()) &&  ing2.isSelected()) {
p++;
break;
}
}
}
}
}
result.setText(String.valueOf(p));
}
}
});
h.start();

add(lIng,BorderLayout.WEST);
add(result,BorderLayout.CENTER);
add(calculate,BorderLayout.EAST);
setVisible(true);
}

public static void main(String[] args) {

List  smoothies = List.of(List.of(List.of("nectar"), List.of("nectar")),
List.of(List.of("nectar"), List.of("milk")),
List.of(List.of("grapes"), List.of("grapes")),
List.of(List.of("grapes"), List.of("horse","apple","cactus","salt","butter","mango")),
List.of(List.of("grapes"), List.of("nectar")),
List.of(List.of("grapes"), List.of("milk")),
List.of(List.of("milk"), List.of("milk")),
List.of(List.of("milk"), List.of("apple","cactus")),
List.of(List.of("milk"), List.of("salt")),
List.of(List.of("mango"), List.of("mango")),
List.of(List.of("mango"), List.of("kelp","apple","cactus","butter")),
List.of(List.of("nectar"), List.of("mango")),
List.of(List.of("milk"), List.of("mango")),
List.of(List.of("salt"), List.of("mango")),
List.of(List.of("cactus"), List.of("cactus","horse","nectar","pumpkin")),
List.of(List.of("cactus"), List.of("salt")),
List.of(List.of("pepper"), List.of("pepper")),
List.of(List.of("pepper"), List.of("cactus","pumpkin")),
List.of(List.of("pepper"), List.of("potato")),
List.of(List.of("pepper"), List.of("grapes","apple","milk","mango")),
List.of(List.of("apple"), List.of("apple")),
List.of(List.of("apple"), List.of("horse","nectar","cactus","potato")),
List.of(List.of("apple"), List.of("salt")),
List.of(List.of("kelp"), List.of("kelp")),
List.of(List.of("kelp"), List.of("grapes","apple","potato")),
List.of(List.of("kelp"), List.of("pumpkin")),
List.of(List.of("kelp"), List.of("milk")),
List.of(List.of("kelp"), List.of("salt")),
List.of(List.of("horse"), List.of("horse","kelp","pepper","nectar","potato","salt","mango")),
List.of(List.of("horse"), List.of("milk")),
List.of(List.of("potato"), List.of("potato")),
List.of(List.of("potato"), List.of("grapes","cactus","butter")),
List.of(List.of("nectar"), List.of("potato")),
List.of(List.of("milk"), List.of("potato")),
List.of(List.of("potato"), List.of("mango")),
List.of(List.of("potato"), List.of("salt")),
List.of(List.of("butter"), List.of("butter","kelp")),
List.of(List.of("apple"), List.of("butter")),
List.of(List.of("cactus"), List.of("butter")),
List.of(List.of("nectar"), List.of("butter")),
List.of(List.of("butter"), List.of("pumpkin")),
List.of(List.of("milk"), List.of("butter")),
List.of(List.of("salt"), List.of("butter")),
List.of(List.of("pumpkin"), List.of("pumpkin")),
List.of(List.of("pumpkin"), List.of("horse","grapes","apple","potato")),
List.of(List.of("nectar"), List.of("pumpkin")),
List.of(List.of("milk"), List.of("pumpkin")),
List.of(List.of("pumpkin"), List.of("mango")),
List.of(List.of("salt"), List.of("pumpkin")),
List.of(List.of("egg"),  List.of("egg","grapes","nectar","milk","salt")),
List.of(List.of("egg"), List.of("mango")),
List.of(List.of("egg"), List.of("cactus")),
List.of(List.of("egg"), List.of("pepper")),
List.of(List.of("egg"), List.of("apple")),
List.of(List.of("egg"), List.of("kelp")),
List.of(List.of("egg"), List.of("horse")),
List.of(List.of("egg"), List.of("potato")),
List.of(List.of("egg"), List.of("butter")),
List.of(List.of("egg"), List.of("pumpkin")),
List.of(List.of("guts"), List.of("mango")),
List.of(List.of("guts"), List.of("cactus")),
List.of(List.of("fang"), List.of("pepper")),
List.of(List.of("guts"), List.of("pepper")),
List.of(List.of("guts"), List.of("apple")),
List.of(List.of("fang"), List.of("kelp")),
List.of(List.of("fang"), List.of("horse")),
List.of(List.of("fang"), List.of("potato")),
List.of(List.of("fang"), List.of("butter")),
List.of(List.of("fang"), List.of("pumpkin")));

System.out.println(smoothies);
new smoothies(smoothies);
}

}
Вы не должны с ним взаимодействовать, и я установил для параметра Editable значение false, но иногда он просто вылетает из ниоткуда, а иногда действительно отправляет ошибку

Код: Выделить всё

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: bad position: 1
что-то про каретку, я не понимаю, что здесь имеется в виду


Подробнее здесь: https://stackoverflow.com/questions/792 ... jtextfield
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»