2017-11-28 4 views
-2

私はコーディングしていますが、エラーが表示されません。それは直接 "エラー"ではありませんが、私が青を押すと、背景は青に変わりません。私はクラスMeny(ActionListener)からこのコードをpublic void actionPerformed(ActionEvent e)に置き換えようとしましたが、動作しません。Java ActionListenerでエラーが発生しました

ここにコードがあります。

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

public class MenyTest extends JFrame { 
JPanel panel; 
JMenuBar menyrad; 
JMenu fargmeny, svmeny; 
JMenuItem rod, gron, bla, svart, gra, vit; 

public MenyTest() { 
    panel = new JPanel(); 
    panel.setBackground(Color.white); 
    add(panel); 

    menyrad = new JMenuBar(); 
    fargmeny = new JMenu("Färger"); 
    svmeny = new JMenu("SvartVitt"); 
    this.setJMenuBar(menyrad); 
    menyrad.add(fargmeny); 
    menyrad.add(svmeny); 

    rod = new JMenuItem("Röd"); 
    gron = new JMenuItem("Grön"); 
    bla = new JMenuItem("Blå"); 
    svart = new JMenuItem("Svart"); 
    gra = new JMenuItem("Grå"); 
    vit = new JMenuItem("Vit"); 

    fargmeny.add(rod); 
    fargmeny.add(gron); 
    fargmeny.add(bla); 

    svmeny.add(svart); 
    svmeny.add(gra); 
    svmeny.add(vit); 
} 

    public static void main(String[] args) { 
    MenyTest f = new MenyTest(); 
    f.setSize(500, 500); 
    f.setLocation(400, 150); 
    f.setTitle("MenyTest"); 
    f.setDefaultCloseOperation(MenyTest.EXIT_ON_CLOSE); 
    f.setVisible(true); 
} 

public class Meny extends JFrame implements ActionListener { 

public void actionPerformed(ActionEvent e) { 
    rod.addActionListener(this); 
    gron.addActionListener(this); 
    bla.addActionListener(this); 
    svart.addActionListener(this); 
    gra.addActionListener(this); 
    vit.addActionListener(this); 

    if (e.getSource() == rod) panel.setBackground(Color.red); 
    else if (e.getSource() == gron) panel.setBackground(Color.green); 
    else if (e.getSource() == bla) panel.setBackground(Color.blue); 
    else if (e.getSource() == svart) panel.setBackground(Color.black); 
    else if (e.getSource() == gra) panel.setBackground(Color.gray); 
    else if (e.getSource() == vit) panel.setBackground(Color.white); 
} 
+0

あなたも、アクションイベントを起動することができません。 'MenyTest'をJFrameとして使っても大丈夫ですか? – utkarsh31

+0

@ utkarsh31はいいいです! – Djubi

答えて

0
public class MenyTest extends JFrame implements ActionListener{ 

JPanel panel; 
JMenuBar menyrad; 
JMenu fargmeny,svmeny; 
JMenuItem rod,gron,bla,svart,gra,vit; 

public MenyTest() { 
    panel = new JPanel(); 
     panel.setBackground(Color.white); 
     add(panel); 

     menyrad = new JMenuBar(); 
     fargmeny = new JMenu("Färger"); 
     svmeny = new JMenu("SvartVitt"); 
     this.setJMenuBar(menyrad); 
     menyrad.add(fargmeny); 
     menyrad.add(svmeny); 

     rod = new JMenuItem("Röd"); 
     gron = new JMenuItem("Grön"); 
     bla = new JMenuItem("Blå"); 
     svart = new JMenuItem("Svart"); 
     gra = new JMenuItem("Grå"); 
     vit = new JMenuItem("Vit"); 

     fargmeny.add(rod); 
     fargmeny.add(gron); 
     fargmeny.add(bla); 

     svmeny.add(svart); 
     svmeny.add(gra); 
     svmeny.add(vit); 
     rod.addActionListener(this); 
     gron.addActionListener(this); 
     bla.addActionListener(this); 
     svart.addActionListener(this); 
     gra.addActionListener(this); 
     vit.addActionListener(this); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == rod) panel.setBackground(Color.red); 
     else if (e.getSource() == gron) panel.setBackground(Color.green); 
     else if (e.getSource() == bla) panel.setBackground(Color.blue); 
     else if (e.getSource() == svart) panel.setBackground(Color.black); 
     else if (e.getSource() == gra) panel.setBackground(Color.gray); 
     else if (e.getSource() == vit) panel.setBackground(Color.white); 

} 

}あなたのコードを1として

public class Main { 

public static void main(String[] args) { 
     MenyTest f = new MenyTest(); 
     f.setSize(500, 500); 
     f.setLocation(400, 150); 
     f.setTitle("MenyTest"); 
     f.setDefaultCloseOperation(new JFrame().EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 


} 
+0

私はあなたのコードから助けを受けました、ありがとう!しかし、私はすでに2つのクラスを持っているので、私はパブリッククラスのメインを削除する必要がありました。 – Djubi

+0

メインとのクラスが分かれていると便利です。便利です –

関連する問題