옴스 법 앱을 구축 중입니다. ,JPanel을 보이지 않게 설정하고 기본 이외의 콤보 상자를 선택하면 표시되지만 구성 요소가 누락됩니다.
콤보 상자, 볼트를 계산 옴을 계산하는 옵션이 있습니다 : 당신이 그것을 실행할 때 여기 보이는 방법) = 너무 친절하십시오 (튜토리얼없이) 지금까지 내 첫 번째 프로그램 있음을 유의하시기 바랍니다 등 ...
콤보 상자에서 선택을 할 때까지 중앙 패널이 보이지 않도록 설정됩니다.
내가 직면하고 문제는의 처음 시간이 나는 선택을 즉, JLabel의/JTextArea에 콤보의 한 (각 쌍 : 다음은 선택을 할 때 어떻게 보일지입니다 수직 상자 안에 자신의 패널에)이 표시됩니다 내가 콤보 상자를 클릭하고 다시 같은 선택을 할 경우
가 올바르게 표시됩니다. 첫 번째 클릭에서 왜 잘못 작동하는지 파악할 수 없습니다. 아마도 GUI를 만드는 데 잘못된 접근 방식을 사용하고있을 것입니다. 여기에 지금까지 코드입니다 :
private JFrame frame;
private String[] choiceList = {"", "Calculate Volts", "Calculate Amps", "Calculate Ohms", "Calculate Watts"};
private JTextField textField_2;
private JPanel centerPanel;
private String volts = "Volts";
private String amps = "Amps";
private String ohms = "Ohms";
private String watts = "Watts";
private JLabel var1Label;
private JLabel var2Label;
private JLabel var3Label;
private JFormattedTextField var1TextField;
private JFormattedTextField var2TextField;
private JFormattedTextField var3TextField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI window = new GUI();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public GUI() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setTitle("BotsOne ElectriCalc");
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel northPanel = new JPanel();
northPanel.setIgnoreRepaint(true);
northPanel.setBorder(new LineBorder(Color.GRAY));
frame.getContentPane().add(northPanel, BorderLayout.NORTH);
JLabel choiceLabel = new JLabel("Please make a selection:");
northPanel.add(choiceLabel);
JComboBox choiceCombo = new JComboBox(choiceList);
northPanel.add(choiceCombo);
choiceCombo.addActionListener(new ChoiceComboListener());
JPanel southPanel = new JPanel();
southPanel.setIgnoreRepaint(true);
southPanel.setBorder(new LineBorder(Color.GRAY));
frame.getContentPane().add(southPanel, BorderLayout.SOUTH);
JLabel label = new JLabel("Answer:");
southPanel.add(label);
textField_2 = new JTextField();
textField_2.setColumns(10);
southPanel.add(textField_2);
centerPanel = new JPanel();
centerPanel.setVisible(false);
centerPanel.setBorder(new LineBorder(Color.GRAY));
frame.getContentPane().add(centerPanel, BorderLayout.CENTER);
Box centerPanelVertBox = Box.createVerticalBox();
centerPanelVertBox.setAlignmentX(Component.CENTER_ALIGNMENT);
centerPanel.add(centerPanelVertBox);
centerPanelVertBox.setVisible(true);
centerPanelVertBox.setBorder(null);
JLabel pleaseEnterLabel = new JLabel("Please enter 2 of 3 values:");
pleaseEnterLabel.setBorder(new EmptyBorder(15, 0, 10, 0));
pleaseEnterLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
centerPanelVertBox.add(pleaseEnterLabel);
JPanel var1Panel = new JPanel();
centerPanelVertBox.add(var1Panel);
var1Label = new JLabel("xxx");
var1Label.setAlignmentX(Component.CENTER_ALIGNMENT);
var1Panel.add(var1Label);
var1TextField = new JFormattedTextField(NumberFormat.getInstance());
var1TextField.setColumns(10);
var1Panel.add(var1TextField);
Panel var2Panel = new Panel();
centerPanelVertBox.add(var2Panel);
var2Label = new JLabel("xxx");
var2Label.setAlignmentX(Component.CENTER_ALIGNMENT);
var2Panel.add(var2Label);
var2TextField = new JFormattedTextField(NumberFormat.getInstance());
var2TextField.setColumns(10);
var2Panel.add(var2TextField);
Panel var3Panel = new Panel();
centerPanelVertBox.add(var3Panel);
var3Label = new JLabel("xxx");
var3Label.setAlignmentX(Component.CENTER_ALIGNMENT);
var3Panel.add(var3Label);
var3TextField = new JFormattedTextField(NumberFormat.getInstance());
var3TextField.setColumns(10);
var3Panel.add(var3TextField);
Panel calculatePanel = new Panel();
centerPanelVertBox.add(calculatePanel);
JButton calculateButton = new JButton("Calculate");
calculatePanel.add(calculateButton);
}
public class ChoiceComboListener implements ActionListener { //combobox actionlistener
public void actionPerformed(ActionEvent ev) {
JComboBox cb = (JComboBox)ev.getSource();
String currentComboSelection = (String)cb.getSelectedItem();
if (currentComboSelection.equals(choiceList[1])) { //choice 1 (Calculate Volts)
centerPanel.setVisible(true);
var1Label.setText(amps);
var2Label.setText(ohms);
var3Label.setText(watts);
//centerPanel.repaint();
}
if (currentComboSelection.equals(choiceList[2])) { //choice 2 (Calculate Amps)
centerPanel.setVisible(true);
var1Label.setText(volts);
var2Label.setText(ohms);
var3Label.setText(watts);
centerPanel.repaint();
}
if (currentComboSelection.equals(choiceList[3])) {
centerPanel.setVisible(true);
var1Label.setText(volts);
var2Label.setText(amps);
var3Label.setText(watts);
}
if (currentComboSelection.equals(choiceList[4])) {
centerPanel.setVisible(true);
var1Label.setText(volts);
var2Label.setText(amps);
var3Label.setText(ohms);
}
if (currentComboSelection.equals(choiceList[0])) {
centerPanel.setVisible(false);
//centerPanel.repaint();
}
}
}
당신은 하단에 보면은, ChoiceComboListener라는 내부 클래스가있다가,이 콤보 수신기, 내가 칠하고(), 및 기타 다양한 것들로 장난 시도하지만, 나는 아무것도 할 수 없다. 어떤 도움, 안내 또는 비판도 환영합니다.
"내 첫 프로그램이 (튜토리얼없이) 명심하십시오"- 잘 했어, 잘 했어. –
@Bots 의견을 답변으로 게시하고 답변으로 표시하십시오. – WhiteKnight