2014-12-01 3 views
-4

프로그램에 값을 입력하면 왜 내 값이 넘어지지 않습니까? 나는 간단한 것을 놓치고있는 것을 안다. 그러나 나는 그것에 손가락을 대지 않을 수있다.내 값이 이전되지 않는 이유

도움을 주시면 감사하겠습니다.

문제가있는 부분은 "actionPerformed"방법입니다. validate()에 도달하기 전에 actionPerformed를 종료에 다른 블록에서

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

public class PayBillGUI extends JFrame implements ActionListener{ 

double totalDue = 0.0; 
double taxRate = 0.0; 
double tipRate = 0.0; 
double totalOwed = 0.0; 


private JButton calcBtn; 
private JButton exitBtn; 
private JLabel totalLbl; 
private JTextField totalTxt; 
private JLabel taxLbl; 
private JTextField taxTxt; 
private JLabel tipLbl; 
private JTextField tipTxt; 
private JLabel owedLbl; 
private JLabel numOweLbl; 

private Container container; 


public PayBillGUI(String title) 
{ 
    super(title); 
    setSize(225, 200); 
    initializeUserInterface(); 
} 

public void initializeUserInterface() 
{ 

    container = this.getContentPane(); 
    container.setLayout(new GridLayout(0,2)); 


    calcBtn = new JButton("Calculate"); 
    exitBtn = new JButton("Exit"); 
    totalLbl = new JLabel("Total Due: "); 
    totalTxt = new JTextField(5); 
    taxLbl = new JLabel("Tax Rate: "); 
    taxTxt = new JTextField(5); 
    tipLbl = new JLabel("Tip Rate: "); 
    tipTxt = new JTextField(5); 
    owedLbl = new JLabel("Total owed:"); 
    numOweLbl = new JLabel("$" + totalOwed); 


    container.add(totalLbl); 
    container.add(totalTxt); 

    container.add(taxLbl); 
    container.add(taxTxt); 

    container.add(tipLbl); 
    container.add(tipTxt); 

    container.add(owedLbl); 
    container.add(numOweLbl); 

    container.add(calcBtn); 
    container.add(exitBtn); 

    calcBtn.addActionListener(this); 
    exitBtn.addActionListener(this); 
} 

public void actionPerformed(ActionEvent event){ 

    String buttonText = calcBtn.getText(); 
    if (event.getActionCommand().equals(buttonText)) 
    { 
     container.remove(numOweLbl); 

     totalDue = Double.parseDouble(totalTxt.getText()); 
     taxRate = (Double.parseDouble(taxTxt.getText())/100) * totalDue; 
     tipRate = (Double.parseDouble(tipTxt.getText())/100) * totalDue; 

     totalOwed = totalDue + taxRate + tipRate; 
     container.add(numOweLbl); 
     validate(); 

    } 
    else 
    { 
     System.exit(0); 
     validate(); 
    } 
} 

} 
+1

''... 왜 내 가치관은 넘어지지 않는가? ' "-"지나가는 것 "이란 무엇을 의미합니까? 어느 값입니까? 귀하의 코드에서 귀하의 문제는 어디에 있습니까? 어떤 데이터가 예상됩니까? 어떤 데이터가 실제로 표시됩니까? – azurefrog

+0

'validate()'무엇입니까? 또한 계산 버튼 이외의 버튼을 누를 때마다이 프로그램이 종료됩니다. 'System.exit()'는'actionPerformed()'메소드에서 제거되어야합니다. – hfontanez

+0

'validate()'를 호출하기 전에 프로그램을 종료하는 것과 관련이있을 수 있습니까? –

답변

0

.

문제는 다음 아마도 :

추가하는 numOweLbl 당신의 UI에,하지만 당신은 totalOwed에의 텍스트를 설정하지 않습니다.

container.add(numOweLbl)하기 전에 텍스트를 설정해야합니다.

numOweLbl.setText(totalOwed) 
관련 문제