gpt4 book ai didi

JAVA硬件。在程序完成之前无法与创建的 JFrame GUI 交互

转载 作者:行者123 更新时间:2023-12-01 13:43:34 25 4
gpt4 key购买 nike

我有一些为我的程序创建的 JFrame GUI;一个带有菜单并显示output.txt 文件,另一个用于输入信息。

在程序完全运行完毕之前,我无法与它们交互或“单击”它们。

我以为是 JOption Pane (是/否)优先于 JFrame,但是,我注释掉了程序中的所有 JOption Pane 来测试这一点,您仍然需要等到程序完全完成才能访问 JFrame。

enter image description here

    public class TheList extends JPanel {


public TheList(){

}
public static void List(){


ArrayList<Food> didntBuy = new ArrayList<Food>();
ArrayList<Food> arrayList = new ArrayList<Food>();// creating an ArrayList for Food objects.
ArrayList<Food> sortLow = new ArrayList<Food>();// creating ArrayLists for high, medium, and low priorities.
ArrayList<Food> sortMed = new ArrayList<Food>();
ArrayList<Food> sortHigh = new ArrayList<Food>();
final Scanner keyboard = new Scanner(System.in);
//System.out.println("\nEnter your name");
String yourName=JOptionPane.showInputDialog("\nEnter your name for the list");
JOptionPane.showMessageDialog(null, "\nYou entered: "+ yourName);
boolean checkLetterFirstName;
checkLetterFirstName = CheckInput.CheckForNumber(yourName);// Used this class from another student.
if(checkLetterFirstName == true)
{ JOptionPane.showMessageDialog(null, "I'm sorry but no numbers or spaces can be in your first name.", yourName, JOptionPane.ERROR_MESSAGE);
//System.out.println("Enter you name");
// yourName=keyboard.nextLine();
yourName=JOptionPane.showInputDialog("\nEnter your name");
checkLetterFirstName = CheckInput.CheckForNumber(yourName);}
try{
//System.out.println("Enter funds");
//Food.currentCash=keyboard.nextDouble();
String fn=JOptionPane.showInputDialog("Enter funds for the list");
Food.currentCash= Double.parseDouble(fn);// converting String to a Double.

if(Food.getCurrentCash()<0)

throw new Exception("Exception: no negative numbers");

}
catch (Exception e){
JOptionPane.showMessageDialog(null, (e.getMessage()), null, JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null, "Enter postive numbers only");
String fn=JOptionPane.showInputDialog("Enter funds for the list");
Food.currentCash= Double.parseDouble(fn);


}

Food.currentCash1=Food.currentCash;

NumberFormat formatter=NumberFormat.getCurrencyInstance();
System.out.println("Current Cash");
System.out.println(formatter.format(Food.currentCash));// used a currency formatter to covert to dollars.

final Scanner keyboard6 = new Scanner(System.in);

for (int i = 0; i < 50; i++) {
//An abstract class cannot be instantiated



int answer=
JOptionPane.showConfirmDialog(null, "Do you want to add a new apple(s) object to list?", "Click Yes or No:", JOptionPane.YES_NO_OPTION);
if (answer== JOptionPane.YES_OPTION)
{


JFrame frame = new JFrame(); // creating a new JFrame object called "frame".
Container pane = null;
// SpringLayout layout = new SpringLayout();
BoxLayout layout= new BoxLayout(pane, BoxLayout.Y_AXIS);


JTextArea text0 =new JTextArea("Do you want to add an apple(s) to list?"); //creating a new TextArea object called "text".
frame.setSize(600, 600); //setting width and hight of window frame.
JButton yes = new JButton("Yes");
JButton no = new JButton("No");
JButton enter= new JButton("Enter");
JButton enter2= new JButton("Enter");
JButton enter3= new JButton("Enter");
JButton enter4= new JButton("Enter");

yes.setAlignmentX(Component.CENTER_ALIGNMENT);
no.setAlignmentX(Component.CENTER_ALIGNMENT);
final JPanel panel = new JPanel(); // creating 4 new panels
final JPanel panel2 = new JPanel();
final JPanel panel3 = new JPanel();
final JPanel panel4 = new JPanel();


JLabel label = new JLabel("What kind of apple?"); // creating 4 labels per panel.
JLabel label2 = new JLabel("Enter priority or -1 to exit program.");
JLabel label3 = new JLabel ("Enter price you want to pay.");
JLabel label4 = new JLabel ("Enter quanity.");

JTextField text = new JTextField(10);
JTextField text2 = new JTextField(10);
JTextField text3 = new JTextField(10);
JTextField text4 = new JTextField(10);

panel.add(label);// adding labels to the panel
panel2.add(label2);
panel3.add(label3);
panel4.add(label4);

panel.add(text); // adding text fields to each panel to enter information.
panel2.add(text2);
panel3.add(text3);
panel4.add(text4);

panel.add(enter);
panel2.add(enter2);
panel3.add(enter3);
panel4.add(enter4);
panel.setAlignmentX(Component.CENTER_ALIGNMENT);
panel2.setAlignmentX(Component.CENTER_ALIGNMENT);
panel3.setAlignmentX(Component.CENTER_ALIGNMENT);
panel4.setAlignmentX(Component.CENTER_ALIGNMENT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// ends program if closed.
frame.setAlwaysOnTop(true); // on top of other windows.
frame.setTitle("Apple");
//Image img = ImageIO.read(new File("C:\\Users\\joey zasa\\workspace\\homework4\\src\\homework4\\apple-full2.jpg"));

frame.add(text0);

frame.add(yes);
frame.add(no);


frame.add(panel);
frame.getContentPane().add(panel2);
frame.getContentPane().add(panel3);
frame.getContentPane().add(panel4);
addComponentsToPane(frame.getContentPane());
final Fruit appleObject =new apple();

yes.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {


panel.setVisible(true);

panel2.setVisible(true);
panel3.setVisible(true);
panel4.setVisible(true);

}


});

no.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {

panel.setVisible(false);
panel2.setVisible(false);
panel3.setVisible(false);
panel4.setVisible(false);


}

});

enter.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
appleObject.setName(keyboard6.nextLine());

}


});

enter2.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
appleObject.setPriority(keyboard.nextInt());

}


});

enter3.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
appleObject.setPrice(keyboard.nextDouble());

}


});

enter3.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
try{
System.out.println("Enter quanity");
appleObject.setQuanity(keyboard.nextInt());
if(appleObject.getQuanity()<0)
throw new negativeException();
}
catch (negativeException x) {
System.out.println(x.getMessage());
System.out.println("Enter quanity again");
appleObject.setQuanity(keyboard.nextInt());

}

}


});

frame.pack();
frame.setVisible(true);// setting the visibility of the frame to true.

for (int z=0; z<appleObject.getQuanity(); z++){
arrayList.add (appleObject);
i++;
}}

if( appleObject.getPriority()==1||appleObject.getPriority()==2){
sortHigh.add(appleObject);}// adding only one instance of an Object to one of 3 Arraylists
if( appleObject.getPriority()==3||appleObject.getPriority()==4){
sortMed.add(appleObject);}
if( appleObject.getPriority()==5){
sortLow.add(appleObject);}

}
System.out.println("\n"+yourName+"'s list:");
int listSize=arrayList.size();
for(int position=0; position <listSize; position++){
System.out.println(arrayList.get(position));
}


int y = arrayList.size();
System.out.println("\nSize of list: "+y+"\n" );

// Sorting with low, medium,100 high, needs. Priorities 1-2=high, 3-4=medium, 5= low.

System.out.println("\nHigh priority items :\n");
int listHigh=sortHigh.size();
for(int position=0; position <listHigh; position++){
System.out.println(sortHigh.get(position));
}
System.out.println("\nMedium priority items :\n");
int listMed=sortMed.size();
for(int position=0; position <listMed; position++){
System.out.println(sortMed.get(position));

}

System.out.println("\nLow priority items :\n");
int listLow=sortLow.size();
for(int position=0; position <listLow; position++){
System.out.println(sortLow.get(position));
}
System.out.println("\n\nCash left for virtual list: ");
System.out.println(formatter.format(Food.currentCash));
System.out.println("\n\nCash left after real world prices: ");
System.out.println(formatter.format(Food.currentCash1));

String nameofFile="out.txt";
PrintWriter outputStream=null;
try{
outputStream=new PrintWriter(nameofFile);
}
catch(FileNotFoundException e)
{
System.out.println("Error opening file");
System.exit(0);
}

{
outputStream.println("\n"+yourName+"'s list of purchased Items:");
int listSize4=arrayList.size();
for(int position=0; position <listSize4; position++){
outputStream.println(arrayList.get(position));
}
outputStream.println("\nHigh priority items :\n");
int listHigh1=sortHigh.size();
for(int position=0; position <listHigh; position++){
outputStream.println(sortHigh.get(position));
}
outputStream.println("\nMedium priority items :\n");
int listMed1=sortMed.size();
for(int position=0; position <listMed1; position++){
outputStream.println(sortMed.get(position));
}

outputStream.println("\nLow priority items :\n");
int listLow1=sortLow.size();
for(int position=0; position <listLow; position++){
outputStream.println(sortLow.get(position));
}
outputStream.println("\nItems you did not buy, but you may need: \n");
int listDidntBuy=didntBuy.size();
for(int position=0; position <listDidntBuy; position++){
outputStream.println(didntBuy.get(position));


}
outputStream.close();

}
}
}
private static void addComponentsToPane(Container pane) {
{
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));


}
}
}

我的程序类太多了,给您提供一个小程序,抱歉。这是我正在其中创建 GUI 之一的类。它是一个名为“apple”的小型 GUI。图中apple后面的GUI来自另一个类,在Main中打开。我还编辑了其余的“杂货列表对象”,仅包括“苹果”。

最佳答案

您似乎正在使用某种长时间运行的进程或无限循环来阻塞事件调度线程

看看Concurrency in Swing了解更多详情。

关于JAVA硬件。在程序完成之前无法与创建的 JFrame GUI 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20509148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com