使用jlist更新DefaultListModel,使用子类扩展



试图解决问题,我无法明白为什么它不起作用。很抱歉,如果我将您的挪威评论和变量混淆。

首先,这是我的form.java文件。

import java.awt.FlowLayout;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;

public class Form implements ActionListener {
    String[] ansatt_type = {"Sjef","Mellomleder","Assistent"};
    String totlønn;
    // KOMPONENTER FOR GUI START
    JList ansatte;
    DefaultListModel model;
    JLabel label1 = new JLabel ();
    JComboBox ansatt_id = new JComboBox (ansatt_type);
    JButton add_me = new JButton ();
    JLabel lønn = new JLabel ();
    // KOMPONENTER FOR GUI SLUTT
    public Form () {
        // LAGER RAMME START
        JFrame ramme = new JFrame ();
        ramme.setBounds(0,0,275,400);
        ramme.setTitle("Ansatt kontroll");
        ramme.setLayout(new FlowLayout ());
        ramme.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // LEGGER TIL TEXT LABEL1
        label1.setText("Liste over ansatte: ");
        ramme.add(label1);
        // LEGGER TIL DEFAULTLISTMODEL
        model = new DefaultListModel();
        ansatte = new JList(model);
        ansatte.setBounds(0, 0, 200, 200);
        model.addElement("KU");
        ramme.add(ansatte);

        // LEGGER TIL DROPDWON LIST;
        ramme.add(ansatt_id);
        // LEGGER TIL ANSATT KNAPP
        add_me.setText("Legg til ny ansatt");
        ramme.add(add_me);
        add_me.addActionListener(this);
        // LEGGER TIL SAMLEDE LØNNSKOSTNADER
        totlønn = "Totale lønnskostnader er : eksempeltall";
        lønn.setText(totlønn);
        ramme.add(lønn);
        ramme.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent arg0) {
        JOptionPane.showMessageDialog(null, "Du har valgt: 
               "+ansatt_id.getSelectedItem()+"!" +  
               " Du blir nå videreført og kan legge til en ny ansatt");
        if(ansatt_id.getSelectedItem() == "Sjef"){
            System.out.println("Valgt Sjef");
            Sjef sj = new Sjef ();
            model.addElement(sj);    
            }
        if(ansatt_id.getSelectedItem() == "Mellomleder"){
            System.out.println("Valgt Mellomleder");
        }
        if(ansatt_id.getSelectedItem() == "Assistent"){
            System.out.println("Valgt Assistent");
        }
    } 
}

我还有一个名为ansatt.java的类文件,他从几个类fiels延伸。我给你看一个。

首先是我的ansatt.java文件;

import javax.swing.JOptionPane;

public class Ansatt extends Form {
    public String Navn;
    public int Lønn;
    public String Type;
    public Ansatt () {
    Navn = JOptionPane.showInputDialog(null, "Skriv inn navn på ny ansatt:  ");
    System.out.println("Ansatt lag til i liste");
    }
    public String toString(){
        return Navn + " " + Type;
    }
}

和扩展类Sjef.java

public class Sjef extends Ansatt {
    public Sjef () {
        super();
        this.Lønn = 40000;
        this.Type = "Sjef";

    }
}

除了模型主义者无法更新之外,一切都有效,我有一个工作示例,他几乎是相同的,但它在此方面确实有效!

您的问题是String中的CC_1比较:

ansatt_id.getSelectedItem() == "Sjef"

很可能不会返回true。您应该使用

"Sjef".equals( ansatt_id.getSelectedItem() )

其他比较相同。

相关内容

  • 没有找到相关文章

最新更新