gpt4 book ai didi

java - 基本 GUI 窗口未出现

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:32 25 4
gpt4 key购买 nike

做一个基本的双面板代码面板是提供信息并提供一个输入数据的框,第二个只是退出或执行。最初,会出现空白窗口,但添加 panelTwo 后,该窗口不再出现。

程序编译并没有显示任何错误,除了在主类中它告诉我与 new SalesClassGUI (); 有关的“忽略新实例”。不确定如何进行任何帮助,我们将不胜感激!

public class SalesClassGUI extends JFrame {

private JPanel panelOne;
private JPanel panelTwo;

private JLabel associateNameLabel;
private JLabel associateNumberLabel;
private JLabel productSoldLabel;
private JLabel productPriceLabel;
private JLabel stateCodeLabel;
private JLabel regionCodeLabel;
private JLabel productNumberLabel;
private JLabel productDescripLabel;

private JTextField associateNameField;
private JTextField associateNumberField;
private JTextField productSoldField;
private JTextField productPriceField;
private JTextField stateCodeField;
private JTextField regionCodeField;
private JTextField productNumberField;
private JTextField productDescripField;

private JButton calcButton;
private JButton exitButton;

private final int WINDOW_WIDTH = 500;
private final int WINDOW_HEIGHT = 500;

public void SalesClassGUI() {

setTitle("Associate Tracker");
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout (new GridLayout (8,1));
buildPanel();
add(panelOne);
add(panelTwo);
setVisible(true);
}

private void buildPanel() {

associateNameLabel = new JLabel("Enter name of associate");
associateNumberLabel = new JLabel("Enter associate number");
productSoldLabel = new JLabel("Enter number of product sold");
productPriceLabel = new JLabel("Enter price of the product");
stateCodeLabel = new JLabel("Enter state code");
regionCodeLabel = new JLabel("Enter region code");
productNumberLabel = new JLabel("Enter product number");
productDescripLabel = new JLabel("Enter product description");

associateNameField = new JTextField();
associateNumberField = new JTextField();
productSoldField = new JTextField();
productPriceField = new JTextField();
stateCodeField = new JTextField();
regionCodeField = new JTextField();
productNumberField = new JTextField();
productDescripField = new JTextField();

//associate name
panelOne = new JPanel();
/*panelOne.setLayout(new GridLayout(8, 2));*/


panelOne.add(associateNameLabel);
panelOne.add(associateNameField);

//associate number
panelOne.add(associateNumberLabel);
panelOne.add(associateNumberField);

//prouct sold
panelOne.add(productSoldLabel);
panelOne.add(productSoldField);

//product price
panelOne.add(productPriceLabel);
panelOne.add(productPriceField);

//state code
panelOne = new JPanel();
panelOne.add(stateCodeLabel);
panelOne.add(stateCodeField);

//region code
panelOne.add(regionCodeLabel);
panelOne.add(regionCodeField);

//product number
panelOne.add(productNumberLabel);
panelOne.add(productNumberField);

//product description
panelOne.add(productDescripLabel);
panelOne.add(productDescripField);

panelTwo = new JPanel();

panelTwo.setLayout(new GridLayout(1, 2));

// Define the button
calcButton = new JButton("Calculate");

// Add the buttons to the panel
panelTwo.add(calcButton);
panelTwo.add(exitButton);

}

public static void main(String[] args) {
SalesClassGUI salesClassGUI = new SalesClassGUI();
}
}

最佳答案

你的类没有构造函数。因此,当您调用 new SalesClassGUI() 时,将调用默认构造函数,该构造函数不执行任何操作。然后你的程序就终止了。

要正确声明构造函数,您需要省略返回类型。

更改:

public void SalesClassGUI() {

至:

public SalesClassGUI() {

注意:您将得到一个 NPE,因为您的 ctor 有一些错误,但这将消除“什么也没有发生”的问题。我通过在调试器中单步执行代码发现了这一点。你也应该学会这样做。

此外,另一个好的调试技术就是添加一些打印语句来跟踪程序的流程,并验证代码是否到达了某些点。这让我意识到问题严重了,我需要使用调试器。

public SalesClassGUI() {
setTitle("Associate Tracker");
System.err.println( "ctor" );
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout (new GridLayout (8,1));
buildPanel();
add(panelOne);
add(panelTwo);
pack();
System.err.println( "setvisible true" );
setVisible(true);
}

当“ctor”没有打印出来时,我知道出了什么问题。

关于java - 基本 GUI 窗口未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228588/

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