- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名初级程序员,我为我的学校类(class)写了这篇文章。但不知何故,即使是我在 displaypay() 下的 JOptionPane.showMessageDialog 也无法正常工作!!!我预计会弹出一个消息框,但在我输入每天的小时数后,没有任何反应!它甚至没有跳过该部分,整个程序只是暂停!我感到很困惑!相反,如果我使用 System.out.println(),它工作正常。
我也不想为 displaypay() 做 System.out.println,我必须使用 showMessageDialog。
package payroll.program;
import java.util.Scanner;
import javax.swing.JOptionPane; //imports
class Employee
{
int hourlypay;
int totalhours = 0;
String name; //variables
void getname()
{
Scanner scan = new Scanner(System.in);
System.out.println("What is this employee's name?");
name = scan.next(); //gets name
}
void calculatepay()
{
int[] hours = new int[5]; //creates array for hours
Scanner scan = new Scanner(System.in);
System.out.println("How much is " + name + " paid per hour?");
hourlypay = scan.nextInt(); //gets hourly pay
for (int i = 0; i < 5; i++)
{
System.out.println("How many hours did " + name + " work on day " + (i + 1) + "?");
hours[i] = scan.nextInt(); //gets hour on each day
totalhours = totalhours + hours[i]; //adds hours up
}
}
void displaypay()
{
JOptionPane.showMessageDialog(null, "You have to pay " + " $" + totalhours * hourlypay + " to " + name + "!"); //displays total pay
}
}
public class PayrollProgram {
public static void main(String[] args) {
int numberofemployees; //variable for # of employees
System.out.println("Welcome to the Payroll Program!"); //welcomes user
Scanner scan = new Scanner(System.in);
System.out.println("How many employees do you have?");
numberofemployees = scan.nextInt(); //gets input for # of employees
Employee[] ArrayofEmployees = new Employee[numberofemployees]; //creates array of employees with the same size as the number of employees
for (int i = 0; i < numberofemployees; i++)
{
ArrayofEmployees[i] = new Employee(); //creates an Employee for each space in the array
}
for (int i = 0; i < numberofemployees; i++)
{
ArrayofEmployees[i].getname();
ArrayofEmployees[i].calculatepay();
ArrayofEmployees[i].displaypay(); //runs functions in class Employee for each employee
}
}
这是我的程序,JOptionPane.showMessageDialog 不工作。
请帮忙!
最佳答案
当您尝试显示 swing 组件时,您应该从事件分派(dispatch)线程执行此操作。否则,您将无法获得可靠的结果。因此,在这种情况下,将所有代码包装在 main 中,调用 SwingUtilities.invokeLater。 :
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
int numberofemployees; //variable for # of employees
System.out.println("Welcome to the Payroll Program!"); //welcomes user
Scanner scan = new Scanner(System.in);
System.out.println("How many employees do you have?");
numberofemployees = scan.nextInt(); //gets input for # of employees
Employee[] ArrayofEmployees = new Employee[numberofemployees]; //creates array of employees with the same size as the number of employees
for (int i = 0; i < numberofemployees; i++) {
ArrayofEmployees[i] = new Employee(); //creates an Employee for each space in the array
}
for (int i = 0; i < numberofemployees; i++) {
ArrayofEmployees[i].getname();
ArrayofEmployees[i].calculatepay();
ArrayofEmployees[i].displaypay(); //runs functions in class Employee for each employee
}
}
});
}
可在此处找到更多信息:The Event Dispatch Thread .
特别注意,如果您无法从事件调度程序线程运行 Swing 组件,会发生什么情况:
Programs that ignore this rule may function correctly most of the time, but are subject to unpredictable errors that are difficult to reproduce.
关于java - 为什么我的 JOptionPane.showMessageDialog 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820154/
我正在编写一个使用条形码扫描仪作为输入的小应用程序。经过一些测试后,我决定使用 evt.getKeyCode() == KeyEvent.VK_ENTER 来启动对数据库的检查。因此,用户可以在文本框
我想我的问题对你来说很简单。我最近开始编程。我想确切地知道它在 showMesageDialog(null,"string") 的 null 中做了什么。 我总是看到有人设置为null,但我不知道为什
我正在开发一个简单的计数器 Swing 应用程序。我试图做到这一点,以便当您单击该复选框时,它将保留在顶部并显示一个消息对话框“在顶部”或“不在顶部”。 但是,当我在编译和运行后单击该复选框时,两条消
我使用Java Swing创建了一个登录框架-Login Frame(1),其中也发生了用户身份验证。 看起来像这样: 因此,如果用户输入了错误的电子邮件ID/密码,则应显示一个消息对话框。这就是为什
我很感兴趣,如何解释这个,这就像黑客一样?或者没有什么值得兴奋的? 也许,当您还是初学者时,您还有过其他类似的更有趣的经历吗? 警告!这不是问题(这真的很有帮助!),我只是在我的代码中寻找更多意义:)
我的 KeyHandler 在这里: private void KeyHandler(java.awt.event.KeyEvent evt) {
所以我是 GUI 新手,我有以下代码: import javax.swing.*; public class GUItest { String number = JOptionPane.sho
因此,当不满足某个条件时,我会出现一个 JOptionPane,并且出于某种原因,当我按“确定”时,它会再次出现,但当在第二个对话框上按“确定”时,它就会消失。 下面是创建对话框的方法: public
这就是场景。 我有代码,可以在遇到错误时启动警报。 AudioAlarm t = new AudioAlarm(song); try { Thread.sleep(2000);
我需要向用户显示信息消息,为此我使用以下代码: JOptionPane.showMessageDialog(null, "message", "result", JOptionPane.INFORMA
我想在 btnCurrentStatus 的点击事件中显示我的数组(已标记),然后我想返回用户选择的值。我为此使用的代码如下,但这里通过 showMessageDialog 方法我只能设法显示数组,我
我是 Java 的新手,正在尝试使用 GUI 显示消息。所以如果使用控制台 System.out.printf("Your total montly bill is $%.2f", totalCos
我在使用 JOptionPane.showMessageDialog() 方法时似乎遇到了一些问题。当我使用该方法时,唯一正确设置的是对话框标题。它不想显示我提供的文本。 这是我用来尝试创建警报的代码
我的问题是,当我使用 创建消息对话框时 JOptionPane.showMessageDialog( ... ) 在显示将图像绘制为背景的 JPanel 的应用程序上(取自:java swing: h
我正在 Java 上制作游戏,并且正在制作角色选择菜单。在该菜单中,我有字符,如果用户单击某个字符,则会出现 JOptionPane.showMessageDialog,显示该字符的统计信息。所以我的
我不只是想制作一个对话框。我有一个 JFrame 对象,我需要在运行其他类时首先显示它,但是我需要当 JFrame 对象执行时,它会等待/暂停/停止主类,例如 JOptionPane 对话框。我不希望
我有一个在 CLI 中运行的程序,但使用 JOptionPane 来显示弹出菜单以提醒用户有事件发生。我注意到,当调用 showMessageDialog 方法时,生成的弹出菜单不会自动聚焦。 有没有
背景信息: 我有一个在海军服役的伙伴,他想知道我是否可以为他开发一个小应用程序,该应用程序可以在他执行 guard 任务时进行计算,因为显然依靠日历很难计算。我使用 JOptionPane.showM
我目前正在从事一个比我原先想象的要复杂的项目。我现在要做的是在不停止程序主线程执行的情况下显示一个消息对话框。现在,我正在使用: JOptionPane.showMessageDialog(null,
所以我的应用程序中有一个弹出对话框,告诉用户有关该程序的信息。在出现自定义图标之前,一切都很顺利。这是我尝试过的: 尝试 1: JOptionPane.showMessageDialog(dialog
我是一名优秀的程序员,十分优秀!