2017-02-08 3 views
1

Только что закончил кодирование, но по какой-то причине, когда я запустил его, мое окно не будет отображаться вообще! У кого-нибудь есть идеи?Почему мое окно не появляется?

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class RetailPriceCalculator extends JFrame 
{ 
private InputPanel inputs; 
private OutputPanel outputs; 
private ExplanationPanel banner; 
private JPanel buttonPanel; 
private JButton calcButton; 
private JButton exitButton; 

public void RetailPriceCalculatorGUI() 
{ 
    setTitle("Retail Price Calculator"); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    setLayout(new BorderLayout()); 

    banner = new ExplanationPanel(); 
    inputs = new InputPanel(); 
    outputs = new OutputPanel(); 

    buildButtonPanel(); 

    add(banner, BorderLayout.NORTH); 
    add(inputs, BorderLayout.WEST); 
    add(outputs, BorderLayout.EAST); 
    add(buttonPanel, BorderLayout.SOUTH); 

    pack(); 
    setVisible(true); 
} 

public void buildButtonPanel() 
{ 
    buttonPanel = new JPanel(); 

    calcButton = new JButton("Calculate"); 
    exitButton = new JButton("Exit"); 

    calcButton.addActionListener(new CalcButtonListener()); 
    exitButton.addActionListener(new ExitButtonListener()); 

    buttonPanel.add(calcButton); 
    buttonPanel.add(exitButton); 
} 

private class CalcButtonListener implements ActionListener 
{ 
    public void actionPerformed (ActionEvent e) 
    { 
     double wholesale, markup, retail; 

     wholesale = inputs.getWholesale(); 
     markup = inputs.getMarkup(); 

     retail = wholesale * (1 + markup); 

     outputs.setRetail(retail); 
    } 
} 

private class ExitButtonListener implements ActionListener 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     System.exit(0); 
    } 
} 

public static void main(String[] args) 
    { 
     new RetailPriceCalculator(); 
    } 

} 

В ExplanationPanel(), InputPanel() и OutputPanel() классы просты и не должны мешать кода. Я просто запускаю его, но он внезапно говорит, что он завершен, и нет окна! Даже пустая рамка!

+0

Попробуйте назначить ссылку в главном блоке, как этот 'RetailPriceCalculator шт = новый RetailPriceCalculator();' – SteelToe

+2

RetailPriceCalculatorGUI должен быть конструктор RetailPriceCalculator, который будет строить панели. – Yan

ответ

3

Возможно, у вас есть опечатка в RetailPriceCalculator методе.

Изменить public void RetailPriceCalculatorGUI() конструктору public RetailPriceCalculator()

или обновить ваш основной метод:

new RetailPriceCalculator().RetailPriceCalculatorGUI(); 
+0

Вот и все :) Спасибо за помощь! –

2

Вы код не имеет исполняемый конструктор (только конструктор по умолчанию, который не делает ничего для вас)

Основываясь на том, что я могу сказать от вашего кода, вы хотите изменить public void RetailPriceCalculatorGUI() { на public RetailPriceCalculator() {

Сказав, я рекомендую вам избегать распространения непосредственно из контейнеров верхнего уровня, таких как JFrame, вы блокируете себя в одном случае, и вы не добавляете в класс новые функциональные возможности/повторное использование. Лучше начать с JPanel и создать пользовательский интерфейс с затем добавить его в какой-либо контейнер вы хотите

Смежные вопросы