0

这段代码有点问题。该actionPerformed方法不起作用。按钮knappStartSalgknappStartKunde,当我按下按钮时没有反应。

应该进口的都进口了。

将非常感谢任何帮助。

开学班。

public class Startmeny extends JFrame implements ActionListener
{

    public JButton knappStartSalg, knappStartKunde, knappStartInfo, knappStartStatistikk;

    public JPanel startmeny()
    {
    JPanel startpanel = new JPanel();
    startpanel.setLayout(new GridLayout(2, 0, 25, 25) );
    startpanel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
    startpanel.setBackground(Color.white);

    JButton knappStartSalg = new JButton();
    knappStartSalg.setText("Salg");
    knappStartSalg.setVerticalTextPosition(JButton.BOTTOM);
    knappStartSalg.setHorizontalTextPosition(JButton.CENTER);
    knappStartSalg.setIcon(new javax.swing.ImageIcon(getClass().getResource("salg.png")));
    knappStartSalg.setIconTextGap(6);
    knappStartSalg.setForeground(Color.black);
    knappStartSalg.setBackground(Color.white);
    knappStartSalg.setBorderPainted(false);
    knappStartSalg.addActionListener(this);

    startpanel.add(knappStartSalg);

    JButton knappStartKunde = new JButton();
    knappStartKunde.setText("Kontroll");
    knappStartKunde.setVerticalTextPosition(JButton.BOTTOM);
    knappStartKunde.setHorizontalTextPosition(JButton.CENTER);
    knappStartKunde.setIcon(new javax.swing.ImageIcon(getClass().getResource("heiskontroll.png")));
    knappStartKunde.setIconTextGap(6);
    knappStartKunde.setForeground(Color.black);
    knappStartKunde.setBackground(Color.white);
    knappStartKunde.setBorderPainted(false);
    knappStartKunde.addActionListener(this);

    startpanel.add(knappStartKunde);

    JButton knappStartInfo = new JButton();
    knappStartInfo.setText("Informasjonsvindu");
    knappStartInfo.setVerticalTextPosition(JButton.BOTTOM);
    knappStartInfo.setHorizontalTextPosition(JButton.CENTER);
    knappStartInfo.setIcon(new javax.swing.ImageIcon(getClass().getResource("info.png")));
    knappStartInfo.setIconTextGap(6);
    knappStartInfo.setForeground(Color.black);
    knappStartInfo.setBackground(Color.white);
    knappStartInfo.setBorderPainted(false);
    knappStartInfo.addActionListener(this);

    startpanel.add(knappStartInfo);

    JButton knappStartStatistikk = new JButton();
    knappStartStatistikk.setText("Statistikk");
    knappStartStatistikk.setVerticalTextPosition(JButton.BOTTOM);
    knappStartStatistikk.setHorizontalTextPosition(JButton.CENTER);
    knappStartStatistikk.setIcon(new javax.swing.ImageIcon(getClass().getResource("statistikk.png")));
    knappStartStatistikk.setIconTextGap(6);
    knappStartStatistikk.setForeground(Color.black);
    knappStartStatistikk.setBackground(Color.white);
    knappStartStatistikk.setBorderPainted(false);
    knappStartStatistikk.addActionListener(this);

    startpanel.add(knappStartStatistikk );

    return startpanel;
}


@Override
public void actionPerformed(ActionEvent e)
{
    Salgsvindu s = new Salgsvindu();

    if(e.getSource() == knappStartSalg)
    {
        s.visSalgvinduNyBruker();
        System.out.println("hallotest");
    }
    else if(e.getSource() == knappStartKunde)
        s.visKontrollvindu();
}
}

运行 GUI 的主类。

public class Skisenter
{
public static void main(String[] args) 
{   
    /*Salgsvindu s = new Salgsvindu();
    s.visSalgvinduNyBruker();*/
    Startmeny startmenyinstanse = new Startmeny();

    startmenyinstanse.setSize(600, 630);
    startmenyinstanse.setTitle("Startmeny for skisenter");
    Startmeny st = new Startmeny();
    startmenyinstanse.setContentPane(st.startmeny());
    startmenyinstanse.setVisible(true);
    startmenyinstanse.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
4

1 回答 1

5

在您的类中,您定义实例变量:

public JButton knappStartSalg, knappStartKunde, knappStartInfo, knappStartStatistikk;

您在动作侦听器实现中使用这些变量。但是,在您的构造函数中,您构造JButtons 并将它们分配给新的局部变量,而不是您在构造函数上方声明的实例变量。所以而不是:

JButton knappStartSalg = new JButton();

knappStartSalg = new JButton();

将按钮分配给实例变量,您的动作侦听器应该可以工作。

于 2013-05-04T20:07:45.000 回答