Anonymous
Почему мое окно в Java (JFrame) вылетает, когда я дважды щелкаю JTextField?
Сообщение
Anonymous » 26 ноя 2024, 23:08
Я написал эту небольшую программу для конкретной утилиты, еще не оптимизировал ее, но пока все работает как задумано, но когда я случайно дважды щелкаю по 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
1732651717
Anonymous
Я написал эту небольшую программу для конкретной утилиты, еще не оптимизировал ее, но пока все работает как задумано, но когда я случайно дважды щелкаю по JTextField, происходит сбой, и я понятия не имею, почему. (JTextField находится в строке 62) [code]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); } } [/code] Вы не должны с ним взаимодействовать, и я установил для параметра Editable значение false, но иногда он просто вылетает из ниоткуда, а иногда действительно отправляет ошибку [code]Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: bad position: 1 [/code] что-то про каретку, я не понимаю, что здесь имеется в виду [youtube]MxIIx3QBYw8[/youtube] Подробнее здесь: [url]https://stackoverflow.com/questions/79227623/why-does-my-window-in-java-jframe-crash-when-i-double-click-on-a-jtextfield[/url]