2017-09-23 8 views
0

String Builder로 만든 객체를 JOptionPane 윈도우에 표시하는 방법을 알아 내려고합니다. 지금은 문자열 작성기로 만든 2 개의 문자열을 인식하지 못합니다. 나는 뭔가를 놓친다. JOptionPane 윈도우에 2 개의 문자열 sb 및 ssb를 표시하려면 어떻게해야합니까? 나는 곤두박질 친다.JOptionPane에 내가 작성한 StringBilder를 사용하려면 어떻게해야합니까?

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

public class CarSelector extends JFrame implements ActionListener, ItemListener{ 

JButton submit = new JButton("Submit"); 
JLabel label1 = new JLabel("Select Vehicle type and options"); 
JLabel carLabel = new JLabel("Vehicle Type"); 
JLabel options = new JLabel("Options"); 
ButtonGroup group = new ButtonGroup(); 
JRadioButton carRadio = new JRadioButton("Car", true); 
JRadioButton vanRadio = new JRadioButton("Minivan"); 
JRadioButton truckRadio = new JRadioButton("Pickup Truck"); 
JRadioButton suvRadio = new JRadioButton("SUV"); 

JCheckBox leather = new JCheckBox("Leather Seats"); 
JCheckBox ac = new JCheckBox("Air Conditioning"); 
JCheckBox sat = new JCheckBox("Sattelite Radio"); 
JCheckBox warmer = new JCheckBox("Seat Warmers"); 
String optionsSelected; 
String carSelected; 


ActionListener listen = new ActionListener(){ 

    @Override 
    public void actionPerformed(ActionEvent ae){ 

      JOptionPane.showMessageDialog(
      CarSelector.this, sb + ssb); 
     } 

}; 

CarSelector(){ 
    super("Vehicle Selector"); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setSize(300, 300); 

    CarGUI(); 
} 

public void CarGUI(){ 

    JPanel vehicleTypes = new JPanel(); 
    JPanel carOptions = new JPanel(); 
    JPanel submitButton = new JPanel(); 

    submit.addActionListener(listen); 

    add(submitButton); 
    submitButton.setLayout(new BoxLayout(submitButton, BoxLayout.X_AXIS)); 
    submitButton.setBounds(100, 150, 100, 100); 

    add(vehicleTypes); 
    vehicleTypes.setLayout(new BoxLayout(vehicleTypes, BoxLayout.Y_AXIS)); 
    vehicleTypes.setBounds(150,0,125,125); 

    add(carOptions); 
    carOptions.setLayout(new BoxLayout(carOptions, BoxLayout.Y_AXIS)); 

    vehicleTypes.add(carLabel); 
    vehicleTypes.add(carRadio); 
    vehicleTypes.add(vanRadio); 
    vehicleTypes.add(truckRadio); 
    vehicleTypes.add(suvRadio); 
    group.add(carRadio); 
    group.add(vanRadio); 
    group.add(truckRadio); 
    group.add(suvRadio);   


    carOptions.add(options); 
    carOptions.add(leather); 
    carOptions.add(ac); 
    carOptions.add(sat); 
    carOptions.add(warmer); 

    submitButton.add(submit); 
    setVisible(true); 

} 

public void radioAction(){ 

    StringBuilder sb = new StringBuilder(); 
    sb.append("You have chosen a "); 

    if (carRadio.isSelected()){ 
    sb.append(" Car "); 
    } 
    else if(vanRadio.isSelected()){ 
    sb.append(" Minivan "); 
    } 
    else if(truckRadio.isSelected()){ 
    sb.append(" Pickup Truck "); 
    } 
    else if(suvRadio.isSelected()){ 
    sb.append(" SUV "); 
    } 
} 
public void checkAction(){ 
    StringBuilder ssb = new StringBuilder(); 
    ssb.append(" with these options: "); 
    if (leather.isSelected()){ 
     ssb.append(" Leather Seats, "); 
    } 
    if (ac.isSelected()){ 
     ssb.append(" Air Conditioning, "); 
    } 
    if (sat.isSelected()){ 
     ssb.append(" Sattelite Radio, "); 
    } 
    if (warmer.isSelected()){ 
     ssb.append(" Seat Warmers, "); 
    } 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
} 
@Override 
public void itemStateChanged(ItemEvent e) { 
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
} 

}

+1

A [로컬 및 멤버 변수의 차이]가를 (http://www.cafeaulait.org/course/week3/11.html). 'sb'와'ssb'는 지역 변수입니다. – user3151902

+0

나는 그것이 문제라고 느꼈지만, 나는 그것을 알아낼 수 없었다. 도와 주셔서 감사합니다. –

답변

0

sbssb 각각 radioAction()checkAction() 및 방법에 정의 된 로컬 변수이다. 이러한 방법을 호출하더라도 (해당하지 않음), 변수가 범위에 있지 않기 때문에 이러한 변수를 사용할 수 없습니다.

public String radioAction(){ 
    StringBuilder sb = new StringBuilder(); 

    // rest of code. 

    return sb.toString(); 
} 

(유사 checkAction()에 대한), 다음 방법 전화 : 당신은 그 방법을 만들 필요가

String 반환

JOptionPane.showMessageDialog(
     CarSelector.this, radioAction() + checkAction());