当我尝试在另一台计算机上 运行 我的 Java class 时出错?
Error when I tried to run my Java class on another computer?
我不是在做学校项目,所以请不要惊慌。我正在做一些私人编程来温习一下。我的程序是 .java 类型的程序,它创建了一个表格,要求抽奖的边界和数量 activity 并根据输入进行生成。
这是我的问题。在我编写程序的 WIndows 2000 计算机上,完美地展示了自己。这只是故事的一半。当我试图把它放在另一台电脑上时,程序显示空白window;它编译和 运行s,但它显示空白 window。现在,我确实认为版本号是一个因素,所以我会提供版本号并要求确认它们是否是罪魁祸首。
我原来的电脑是Windows2000,版本是1.6.0_31-b05。另一台计算机 Windows 7 双引导 Linux Mint 17.2,分别是 运行ning 1.8.0_60-b27 和 1.8.0_00。
我的程序还没有完成,稍后我会着急。我现在希望做的是在我所有计算机的平台上 运行 获得该程序。由于 Java 以其便携性着称,我希望它在我所有的计算机上都能 运行。这是误会吗?
无论如何,这是代码:
//Import class libraries
import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
public class Lotterygui //Begin class
{
//VARIABLES FOR DATA COLLECTION
private JTextField lowerRange; //Lowest number
private JTextField higherRange; //Highest number
private JTextField quantity; //How many numbers to generate
private JTextArea displayArea; //What to display when the program is in use
//ADD WARNING CONSTANT FOR INVALID INPUT
private final String WARNING = "Please fill out valid data "
+ "and not leave anything out. "
+ "Also,do not enter any "
+ "zeroes.";
public Lotterygui()
{
//GUI CONFIGURATION
//Frame settings
JFrame jfrFrame = new JFrame("Lottery Program");
jfrFrame.setSize(300,400);
jfrFrame.setLocationRelativeTo (null);
jfrFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrFrame.setVisible(true);
jfrFrame.setResizable(false);
//Panel to hold the user input controls in place
JPanel jplInputs = new JPanel();
jplInputs.setLayout(new GridLayout(4, 2));
//CREATE INPUT CONTROLS
//Lowest range
JLabel jlblLowerRange = new JLabel("Lowest");
lowerRange = new JTextField();
//Highest range
JLabel jlblHigherRange = new JLabel("Highest");
higherRange = new JTextField();
//Quantity
JLabel jlblQuantity = new JLabel("Quantity");
quantity = new JTextField();
//Buttons and their respective action associations
//Generate numbers button
JButton jbtnGenerate = new JButton("Generate");
ActionListener alGenerate = new listenGenerate();
jbtnGenerate.addActionListener(alGenerate);
//Reset all values button
JButton jbtnReset = new JButton("Reset");
ActionListener alReset = new listenReset();
jbtnReset.addActionListener(alReset);
//ADD CONTROLS TO FORM
jplInputs.add(jlblLowerRange);
jplInputs.add(lowerRange);
jplInputs.add(jlblHigherRange);
jplInputs.add(higherRange);
jplInputs.add(jlblQuantity);
jplInputs.add(quantity);
jplInputs.add(jbtnGenerate);
jplInputs.add(jbtnReset);
//CREATE DISPLAY AREA AND ADD
//The display area used for showing generated numbers
displayArea = new JTextArea();
displayArea.setLineWrap(true);
displayArea.setText(WARNING);
//The control that sets autoscrolling for the display area
JScrollPane jspDisplayArea = new JScrollPane(displayArea);
jfrFrame.add(jspDisplayArea);
//Add the JPanels to the window
jfrFrame.add(jplInputs, BorderLayout.NORTH);
jfrFrame.add(jspDisplayArea);
}//END lotteryGUI constructor
//MAIN Method
public static void main (String[] args)
{
//CALL UP lotteryGUI CLASS
new Lotterygui();
}//END Main method
//GENERATE BUTTONS ACTION
private class listenGenerate implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//DECLARE VARIABLES
int low; //Lowest number
int high; //Highest number
int qty; //How many numbers
try //Monitor the input of above variables in the form
{
low = Integer.parseInt(lowerRange.getText());
high = Integer.parseInt(higherRange.getText());
qty = Integer.parseInt(quantity.getText());
}
catch (NumberFormatException nfe)
{
//RESET ALL FORM VALUES
reset();
//RESET VARIABLE VALUES
low = 0;
high = 0;
qty = 0;
}//END format errors try-catch
//CHECK IF PROGRAM CAN CONTINUE
if (low != 0 || high != 0 || qty != 0) //If valid
{
//Action pending
displayArea.setText("Generate here - incomplete");
}
else //If there are more one or more errors in the input
{
//ISSUE WARNING
JOptionPane.showMessageDialog(null, WARNING);
}//END IF continue CHECK
}//END actionPerformed method
}//END listenGenerate class
我一直在上下查看代码。这是我没有引用导入中概述的任何布局吗?我知道这不是 JPanel,因为我确实尝试过问题仍然存在。任何对我有帮助的事情都将不胜感激。谢谢你。
您正在呼叫
jfrFrame.setVisible(true);
首先,然后将一堆组件添加到 JFrame,这是倒退的,可能导致 GUI 在调整大小、最小化和恢复之前不呈现组件。事实上试试这个——运行 你的程序,然后最小化空白的 GUI 并恢复它,我敢打赌你会看到你的组件。
我建议您交换此顺序 -- 在将所有内容添加到 GUI 后调用 jfrFrame.setVisible(true);
last。
我不是在做学校项目,所以请不要惊慌。我正在做一些私人编程来温习一下。我的程序是 .java 类型的程序,它创建了一个表格,要求抽奖的边界和数量 activity 并根据输入进行生成。
这是我的问题。在我编写程序的 WIndows 2000 计算机上,完美地展示了自己。这只是故事的一半。当我试图把它放在另一台电脑上时,程序显示空白window;它编译和 运行s,但它显示空白 window。现在,我确实认为版本号是一个因素,所以我会提供版本号并要求确认它们是否是罪魁祸首。
我原来的电脑是Windows2000,版本是1.6.0_31-b05。另一台计算机 Windows 7 双引导 Linux Mint 17.2,分别是 运行ning 1.8.0_60-b27 和 1.8.0_00。
我的程序还没有完成,稍后我会着急。我现在希望做的是在我所有计算机的平台上 运行 获得该程序。由于 Java 以其便携性着称,我希望它在我所有的计算机上都能 运行。这是误会吗?
无论如何,这是代码:
//Import class libraries
import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
public class Lotterygui //Begin class
{
//VARIABLES FOR DATA COLLECTION
private JTextField lowerRange; //Lowest number
private JTextField higherRange; //Highest number
private JTextField quantity; //How many numbers to generate
private JTextArea displayArea; //What to display when the program is in use
//ADD WARNING CONSTANT FOR INVALID INPUT
private final String WARNING = "Please fill out valid data "
+ "and not leave anything out. "
+ "Also,do not enter any "
+ "zeroes.";
public Lotterygui()
{
//GUI CONFIGURATION
//Frame settings
JFrame jfrFrame = new JFrame("Lottery Program");
jfrFrame.setSize(300,400);
jfrFrame.setLocationRelativeTo (null);
jfrFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrFrame.setVisible(true);
jfrFrame.setResizable(false);
//Panel to hold the user input controls in place
JPanel jplInputs = new JPanel();
jplInputs.setLayout(new GridLayout(4, 2));
//CREATE INPUT CONTROLS
//Lowest range
JLabel jlblLowerRange = new JLabel("Lowest");
lowerRange = new JTextField();
//Highest range
JLabel jlblHigherRange = new JLabel("Highest");
higherRange = new JTextField();
//Quantity
JLabel jlblQuantity = new JLabel("Quantity");
quantity = new JTextField();
//Buttons and their respective action associations
//Generate numbers button
JButton jbtnGenerate = new JButton("Generate");
ActionListener alGenerate = new listenGenerate();
jbtnGenerate.addActionListener(alGenerate);
//Reset all values button
JButton jbtnReset = new JButton("Reset");
ActionListener alReset = new listenReset();
jbtnReset.addActionListener(alReset);
//ADD CONTROLS TO FORM
jplInputs.add(jlblLowerRange);
jplInputs.add(lowerRange);
jplInputs.add(jlblHigherRange);
jplInputs.add(higherRange);
jplInputs.add(jlblQuantity);
jplInputs.add(quantity);
jplInputs.add(jbtnGenerate);
jplInputs.add(jbtnReset);
//CREATE DISPLAY AREA AND ADD
//The display area used for showing generated numbers
displayArea = new JTextArea();
displayArea.setLineWrap(true);
displayArea.setText(WARNING);
//The control that sets autoscrolling for the display area
JScrollPane jspDisplayArea = new JScrollPane(displayArea);
jfrFrame.add(jspDisplayArea);
//Add the JPanels to the window
jfrFrame.add(jplInputs, BorderLayout.NORTH);
jfrFrame.add(jspDisplayArea);
}//END lotteryGUI constructor
//MAIN Method
public static void main (String[] args)
{
//CALL UP lotteryGUI CLASS
new Lotterygui();
}//END Main method
//GENERATE BUTTONS ACTION
private class listenGenerate implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//DECLARE VARIABLES
int low; //Lowest number
int high; //Highest number
int qty; //How many numbers
try //Monitor the input of above variables in the form
{
low = Integer.parseInt(lowerRange.getText());
high = Integer.parseInt(higherRange.getText());
qty = Integer.parseInt(quantity.getText());
}
catch (NumberFormatException nfe)
{
//RESET ALL FORM VALUES
reset();
//RESET VARIABLE VALUES
low = 0;
high = 0;
qty = 0;
}//END format errors try-catch
//CHECK IF PROGRAM CAN CONTINUE
if (low != 0 || high != 0 || qty != 0) //If valid
{
//Action pending
displayArea.setText("Generate here - incomplete");
}
else //If there are more one or more errors in the input
{
//ISSUE WARNING
JOptionPane.showMessageDialog(null, WARNING);
}//END IF continue CHECK
}//END actionPerformed method
}//END listenGenerate class
我一直在上下查看代码。这是我没有引用导入中概述的任何布局吗?我知道这不是 JPanel,因为我确实尝试过问题仍然存在。任何对我有帮助的事情都将不胜感激。谢谢你。
您正在呼叫
jfrFrame.setVisible(true);
首先,然后将一堆组件添加到 JFrame,这是倒退的,可能导致 GUI 在调整大小、最小化和恢复之前不呈现组件。事实上试试这个——运行 你的程序,然后最小化空白的 GUI 并恢复它,我敢打赌你会看到你的组件。
我建议您交换此顺序 -- 在将所有内容添加到 GUI 后调用 jfrFrame.setVisible(true);
last。