import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class cost extends JFrame{ 
  private JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8; 
  private JTextField jtf1,jtf2,jtf3,jtf4; 
  private JButton butOk; 
  private JComboBox jcb1,jcb2,jcb3,jcb4; 
  
  public cost(){ 
  super("费用管理"); 
  initComponent(); 
  
  setVisible(true); 
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
  setSize(600,500); 
  pack(); 
  
  } 
  public void initComponent(){ 
  jl1=new JLabel("平均水费"); 
  jl2=new JLabel("平均电费"); 
  jl3=new JLabel("物业管理费"); 
  jl4=new JLabel("停车费"); 
  jl5=new JLabel("用水量"); 
  jl6=new JLabel("用电量"); 
  jl7=new JLabel("有效面积"); 
  jl8=new JLabel("总费用"); 
  
  jcb1=new JComboBox(); 
  jcb2=new JComboBox(); 
  jcb3=new JComboBox(); 
  jcb4=new JComboBox();   jtf1=new JTextField(10); 
  jtf2=new JTextField(10); 
  jtf3=new JTextField(10); 
  jtf4=new JTextField(10); 
  
  butOk=new JButton("计算"); 
  
  getContentPane().setLayout(null); 
  
  getContentPane().add(jl1); 
  jl1.setBounds(30,30,70,30); 
  
  getContentPane().add(jl2); 
  jl2.setBounds(30,80,70,30); 
  
  getContentPane().add(jl3); 
  jl3.setBounds(30,130,70,30); 
  
  getContentPane().add(jl4); 
  jl4.setBounds(30,180,70,30); 
  
  getContentPane().add(jl5); 
  jl5.setBounds(250,30,70,30); 
  
  getContentPane().add(jl6); 
  jl6.setBounds(250,80,70,30); 
  
  getContentPane().add(jl7); 
  jl7.setBounds(250,130,70,30); 
  
  getContentPane().add(jl8); 
  jl8.setBounds(280,250,70,30); 
  
  getContentPane().add(jcb1); 
  jcb1.setBounds(120,30,100,30); 
  
  getContentPane().add(jcb2); 
  jcb2.setBounds(120,80,100,30); 
  
  getContentPane().add(jcb3); 
  jcb3.setBounds(120,130,100,30); 
  
  getContentPane().add(jcb4); 
  jcb4.setBounds(120,180,100,30);   getContentPane().add(jtf1); 
  jtf1.setBounds(340,30,100,30); 
  
  getContentPane().add(jtf2); 
  jtf2.setBounds(340,80,100,30); 
  
  getContentPane().add(jtf3); 
  jtf3.setBounds(340,130,100,30); 
  
  
  getContentPane().add(jtf4); 
  jtf4.setBounds(370,250,100,30); 
  
  getContentPane().add(butOk); 
  butOk.setBounds(100,250,70,30); 
  
  database.joinDB(); 
  String sql="select 平均水费,平均电费,物业费,停车费 from 费用表";   try{ 
  if(database.query(sql)){ 
  while(database.rs.next()){ 
  String shuifei=database.rs.getString("平均水费"); 
  String dianfei=database.rs.getString("平均电费"); 
  String wuyefei=database.rs.getString("物业费"); 
  String tingchefei=database.rs.getString("停车费"); 
  
  jcb1.addItem(shuifei); 
  jcb2.addItem(dianfei); 
  jcb3.addItem(wuyefei); 
  jcb4.addItem(tingchefei); 
  } 
  } 
  } catch(Exception ea){}   
  butOk.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { 
if(jtf1.getText().equals("")){ 
new JOptionPane().showMessageDialog(null,"用水量不能为空"); 

else if(jtf2.getText().equals("")){ 
new JOptionPane().showMessageDialog(null,"用电量不能为空"); 

else{ 
int index1=jcb1.getSelectedIndex(); 
int index2=jcb2.getSelectedIndex(); 
    int index3=jcb3.getSelectedIndex(); 
int index4=jcb4.getSelectedIndex(); 
int index5=new Integer(jtf1.getText()).intValue(); 
    int index6=new Integer(jtf2.getText()).intValue(); 
    int index7=new Integer(jtf3.getText()).intValue(); 
  
int a=index1*index5+index2*index6+index3*index7+index4; 
jtf4.setText(String.valueOf(a)); 
  } 
  } 
}); 
  
  } 
  public static void main(String args[]){ 
cost newone= new cost(); 
  } 

计算结果就是出不来,一直计算是0

解决方案 »

  1.   

    getSelectedIndex();
    是不是错了啊?
    getSelectedText();
    另外sql里面用中文不太好吧....建议调试一下,或者用out.print()
    这个问题不难.
      

  2.   

    JComboBox里面输入的是数字,所以想用int类型,就用了getSelectIndex()了调式能出来个JFrame,其他也都正常就是结果出不来的。。
      

  3.   

    int index1 = jcb1.getSelectedIndex();
    这一句是获取选中的序号,不符合你的要求,你如果一直选中第一个,永远是0。改成:
    int index1 = Integer.valueOf(jcb1.getSelectedItem().toString());
    其他几个JCombobox的值依次类推,跨好里的最好做下是否为空判断。
    另外jtf1.getText(),写成jtf1.getText().trim();
      

  4.   

    int index1 = Integer.valueOf(jcb1.getSelectedItem().toString());
    int需要改成Integer,改了后int a=index1*index5+index2*index6+index3*index7+index4; 
    又出现问题,说"the operation * is undefined for the arguments type java.lang.Integer.java.lang.Integer"
      

  5.   

    你在JCombox里面传入数组有问题吧,要传入Integer的,例如new JComBox(new Integer[]{1,2,3,4})
    这样的话应该没有问题吧,自己试试
      

  6.   

    butOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
    if (jtf1.getText().equals("")) {
    new JOptionPane().showMessageDialog(null, "用水量不能为空");
    } else if (jtf2.getText().equals("")) {
    new JOptionPane().showMessageDialog(null, "用电量不能为空");
    } else {
    double index1 = new Double(jcb1.getSelectedItem()
    .toString());
    double index2 = new Double(jcb2.getSelectedItem()
    .toString());
    double index3 = new Double(jcb3.getSelectedItem()
    .toString());
    double index4 = new Double(jcb4.getSelectedItem()
    .toString());
    double index5 = new Double(jtf1.getText()).intValue();
    double index6 = new Double(jtf2.getText()).intValue();
    double index7 = new Double(jtf3.getText()).intValue(); double a = index1 * index5 + index2 * index6 + index3
    * index7 + index4;
    jtf4.setText(String.valueOf(a));
    }
    }
    });
    把这些代码替换你的那个试试看
      

  7.   


    JComboBox中
     int getSelectedIndex() 
              返回列表中与给定项匹配的第一个选项。 
     Object getSelectedItem() 
              返回当前所选项 JTextField
    getText() 
              返回此 TextComponent 中包含的文本。比较简单的  看你代码一大堆,不懂得属性就看API
      

  8.   


    前提:你的界面能正常出来,jcombobox中也有东东了,按钮事件也能正常触发;
    int comSelectedContent = Integer.parseInt(jcb1.getSelectedItem().toString()); //获取当前选择的jcombobox的内容,并转成基本类型;这类问题正如各楼说的,耐心一点,用一把调试或是System.out.println();就都能解决