私は Java プログラミングの初心者なので、ここで正しい用語を使用しているかどうかわかりません。基本的に、押された 4 つのカラー ボタンのいずれかに背景の色を変更する小さなアプレットをプログラムする割り当てがあります。ActionListener のサンプル コードを渡され、MouseListener を使用して実装するように言われました。
正常に動作するようにプログラムすることができた後、要件が変更されました。以下は、動作する私の現在のコードです(要件が変更される前)。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class ButtonPanel extends JPanel implements MouseListener{
private JButton abutton, bbutton, cbutton, dbutton;
public ButtonPanel(){
abutton = new JButton("Cyan");
bbutton = new JButton("Orange");
cbutton = new JButton("Magenta");
dbutton = new JButton("Yellow");
add(abutton);
add(bbutton);
add(cbutton);
add(dbutton);
/* register the specific event handler into each button */
abutton.addMouseListener(this);
bbutton.addMouseListener(this);
cbutton.addMouseListener(this);
dbutton.addMouseListener(this);
}
/* implementation for the Mouse Event */
public void mouseClicked(MouseEvent evt){
Object source = evt.getSource();
if (source == abutton) setBackground(Color.cyan);
else if (source == bbutton) setBackground(Color.orange);
else if (source == cbutton) setBackground(Color.magenta);
else if (source == dbutton) setBackground(Color.yellow);
repaint();
}
public void mousePressed(MouseEvent evt){
}
public void mouseEntered(MouseEvent evt){
}
public void mouseReleased(MouseEvent evt){
}
public void mouseExited(MouseEvent evt){
}
}
class ButtonFrame extends JFrame{
public ButtonFrame(){
setTitle("Low-level Mouse Event to Set Color");
setSize(50, 50);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ System.exit(0);}
});
Container contentPane = getContentPane();
contentPane.add(new ButtonPanel());
}
}
public class ME_SetColor {
public static void main(String[] args) {
JFrame frame = new ButtonFrame();
frame.pack();
frame.setSize(400, 250);
frame.setVisible(true);
}
}
extends JPanel
新しい要件は、および のその他の拡張子を除外することですclass ButtonPanel
。したがって、変更されたクラスは
class ButtonPanel implements MouseListener{
private JButton abutton, bbutton, cbutton, dbutton;
JPanel がないと、ButtonPanel クラスはコンポーネントにならないため、 に追加できませんcontentPane
。この ButtonPanel をコンポーネントにして、に追加できるようにする別の方法はありcontentPane
ますか? または、このプログラムを実装する他の方法はありますか?