-
ソースコード:
プレーンコピーをクリップボードプリントに表示しますか?
java.awt.Colorをインポートします。
java.awt.Containerをインポートします。
java.awt.FlowLayoutをインポートします。
java.awt.Graphicsをインポートします。
インポート java.awt.event.MouseEvent;
インポート java.awt.event.MouseListener;
インポート java.awt.event.MouseMotionAdapter;
インポート javax.swing.ButtonGroup;
javax.swing.JButton をインポートします。
javax.swing.JFrameをインポートします。
インポート javax.swing.JRadioButton;
//####################################
//プログラムの実行後に何も表示されない場合がありますが、ボタンを表示するには画面上でマウスを移動する必要があります。
//理由は分かりません~~今後検討する必要があります
//###################################
public class testEventMouse extends JFrame{ //メインクラス、paint()メソッドを使用するためJFrameクラスを継承
// Frame クラスを継承する必要があります。そうでない場合、初心者の私は、paint() を呼び出すことができる他のメソッドを学習していません。
コンテナ contentPanel; // コンテンツ グリッド参照;
JButton b1,b2,b3,b4,b5;//これらは 5 つのボタンです
JRadioButton backGroundRadio,foreGroundRadio // 2 つのラジオ ボタン ボックスを定義します。
ButtonGroup radioGroup //ラジオボタングループ;
int xValue,yValue //マウスの位置 (x,y) を保持します。
JFrame jf=this;//後でコードを調整したときに、背景色がコンテンツ グリッドまたは他のコンポーネントであることが判明したため、現在のオブジェクトを jf に割り当てます
//管理するために、Frame フレーム クラスは背景色を管理しませんが、JFrame オブジェクトを取得したい理由は、前景色はフレーム クラスだけであるためです。
// 管理可能ですが、後でイベント処理を実行すると、他のコンポーネントは管理できないことがわかります。
public testEventMouse(){ //コンストラクター
super("08 Jiben Cao Feng--模擬筆記パッド");
b1=new JButton("Black");// 5 つのボタンを実装します
b2=新しい JButton("青");
b3=新しい JButton("赤");
b4=新しい JButton("白");
b5=新しい JButton("黄色");
contentPanel=this.getContentPane();// コンテンツ ペインを取得します
contentPanel.setLayout(new FlowLayout());//コンテンツグリッドのレイアウトマネージャーを設定します
backGroundRadio=new JRadioButton("backGround"); // チェックボックスをインスタンス化します。
foreGroundRadio=new JRadioButton("foreGround");
contentPanel.add(backGroundRadio);//コンテンツグリッドに追加
contentPanel.add(foreGroundRadio);
contentPanel.add(b1);//追加ボタン
contentPanel.add(b2);
contentPanel.add(b3);
contentPanel.add(b4);
contentPanel.add(b5);
MouseListenerHandler mou=new MouseListenerHandler(); // イベントリスニングクラスを実装します。
b1.addMouseListener(mou); // 5 つのボタンのリスナーとして登録します
b2.addMouseListener(mou);
b3.addMouseListener(mou);
b4.addMouseListener(mou);
b5.addMouseListener(mou);
radioGroup=new ButtonGroup(); //ラジオボタングループのインスタンス
radioGroup.add(backGroundRadio);// 2 つのラジオ ボタンを 1 つのグループに結合します
radioGroup.add(foreGroundRadio);
addMouseMotionListener( //匿名クラス
new MouseMotionAdapter(){ //現在のオブジェクトによって呼び出されるので、遊ぶためのアダプターを作成しました。
public void MouseDragged(MouseEvent e){
xValue=e.getX();
yValue=e.getY();
repaint(); //paint() メソッドを呼び出します。
}
}
);
setSize(1000,500); //やりたければ大きくしてください
setVisible(true); // 表示を設定します。
}
public class MouseListenerHandlerimplemented MouseListener{ //マウスイベントリスニングクラス
public void MousePressed(MouseEvent e){ //実際には、便利なものは 1 つだけあり、それはマウス クリック イベントです
//監視対象が多いのでアダプタを使うのは良くない。
if(e.getSource()==b1){ // getSouce() を使用してオブジェクトを取得します
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLACK);//ここからがポイントです。コンテンツ グリッドを使用して背景色を設定します
それ以外 //#####################
jf.setForeground(Color.BLACK); //フレームを使用して前景色を設定します
}
if(e.getSource()==b2){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLUE);
それ以外
jf.setForeground(Color.BLUE);
}
if(e.getSource()==b3){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.RED);
それ以外
jf.setForeground(Color.RED);
}
if(e.getSource()==b4){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.WHITE);
それ以外
jf.setForeground(Color.WHITE);
}
if(e.getSource()==b5){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.YELLOW);
それ以外
jf.setForeground(Color.YELLOW);
}
}
public void MouseClicked(MouseEvent e) { //以下のものは役に立たないが、インターフェースメソッドとしては空の実装
}
public void MouseEntered(MouseEvent e) {
}
public void MouseExited(MouseEvent e) {
}
public void Mouseリリース(MouseEvent e) {
}
}
public void Paint(Graphics g){ //人間の目を混乱させるために小さな円をいくつか描きます(笑)
g.fillOval(xValue, yValue, 4, 4); //円を描画します。
}
public static void main(String args[]){
new testEventMouse(); //匿名クラス
}