質問はタイトルのとおりです。
ボタンをクリックしてイベント処理を行うことはできますが、たとえばここのサイトのように、文字列をクリックして何か処理を起こさせようかなぁと思ってもうまくいきません。
JLabelだとなにも変化しないので、多分無理何度だろうと悟りましたが、どうやったらできるのかわかりません。何かヒントで結構ですので教えてください。というかそもそもこういうことはできるのでしょうか?
ちなみにアプレットではありません。
javaを勉強し始めてそこそこの月日がたちますが、超スローペースでのお勉強な上に、もともと機会音痴なのでいつまでたっても初心者です(汗)なので、質問自体わけわからない文になっていたら、補足要求してください。一生懸命考えるのでよろしくお願いします。
No.2ベストアンサー
- 回答日時:
参考程度にしてください。
「プログラミングに対する姿勢」(というか対処法というか何というか)という観点から。
■方法1 ~属性変更~
「すごく簡単」なのは、
今までふつうに
JButton b = new JButton("アニマル");
としていた箇所で、「好みに応じて」以下のメソッド
b.setMargin(new Insets(0, 0, 0, 0));
b.setBorderPainted(false);
b.setFocusPainted(false);
などをを追加する方法で、おすすめです。
「setMargin()とか、そんなの思いつかなないよ!」とお嘆きの場合は、
あきらめてJButtonをデフォルトのまま使うか、
またはsunの開発キットに付属の「APIリファレンス」に、
より親しむしかないでしょう。
(とくにswingコンポーネントは)
---
■方法2 ~派生(カスタマイズ)~
「こんなボタンじゃダメだ。これ以上のものが欲しい!」という場合は、
それなりに「自作(カスタマイズ)」する必要があります(たぶん)。
その一例を書いておきます。(※この文章の最後)
ちなみにNo.1さんの書かれた方法も、とてもおすすめで、
僕もよく使う方法です。
(※Button(JButton)のデフォルト動作が気に入らない時など。
たとえばゲームなどにおいて)
この「派生(カスタマイズ)」(と「イベント処理」)の方法・しくみが、
イマイチわかりにくい、というのであれば、
もうこれはぜひ入門書を買って、
「地道に」勉強するしかないでしょう!
(※Javaプログラミングを続けるにあたっては、
この「派生」や「イベント処理」の話は避けようがない)
またはあきらめて、方法1で手を打ちましょう。
---
■僕の「一例」。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class Test extends JComponent implements ChangeListener{
public Test() {
FlowLayout l = new FlowLayout();
l.setHgap(0);
setLayout(l);
init();
}
void init() {
createLabel("私は");
createButton("アニマル");
createLabel("浜口");
}
void createLabel(String s) {
JLabel l = new JLabel(s);
add(l);
}
JButton getButton(String s) {
return new MyButton(s);
}
void createButton(String s) {
JButton b = getButton(s);
add(b);
b.addChangeListener(this);
b.setRolloverEnabled(true);
b.setMargin(new Insets(0, 0, 0, 0));
b.setBorderPainted(false);
b.setFocusPainted(false);
}
public void stateChanged(ChangeEvent e) {
Object src = e.getSource();
if (src instanceof MyButton) {
((MyButton)src).r();
}
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setContentPane(new Test());
f.pack();
f.show();
}
class MyButton extends JButton{
private boolean overed;
private Color saved;
private Color overedCol = Color.blue;
public MyButton(String s) {
super(s);
}
public void r() {
if (overed) {
setForeground(saved);
} else {
saved = getForeground();
setForeground(overedCol);
}
overed = (overed== true) ? false: true;
}
}
}
アドバイスありがとうございます。サンプルプログラムまでどうもです☆
sunのAPI、何度も参考のため見てるのですが、なかなか難しくて理解できません(>_<)
でも上達するためには、勉強するのみですね!
お二人のアドバイス、大変参考になりましたが、プログラムがちょっとおもしろいなと思ったので、(アニマル浜口さんがツボでした/笑)kacchannさまに20ポイント差し上げたいと思います☆ ⌒(*^-゜)b
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ノートパソコン 外付けHDDがDからEに変わってしまいました。元に戻したいです。 2 2022/04/04 14:45
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- 大学受験 3浪しようと思うので、アドバイスお願いします。 自分としては結構メンタルきつくて後期でいいから、東京 3 2023/02/13 21:47
- C言語・C++・C# 必ずyou bet と表示されます 2 2023/07/28 22:19
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Windows 10 Windows10の不具合(Critical Process Died) 9 2022/04/19 21:11
- 高校 有効数字計算 確定した値を含む 2 2023/01/18 06:03
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンの複数割り当てについて
-
【Java】画像表示が出来ない!
-
Javaでタイマーの使い方
-
大量のデータを読み込んで表示...
-
Thread.sleepのInterruptedExce...
-
java のstruts1.3です。
-
C#で、あるクラスのメンバーす...
-
C# DataGridView列カスタマイズ
-
C#でキーイベントが発生しない...
-
C#で別のFormへ複数の値を返そ...
-
C# 矢印キーの取得
-
JavaFXでの表内のチェックボッ...
-
C#でのWNetAddConnection3の使...
-
ループ処理の際、最後だけ","を...
-
C言語のポインターに関する警告
-
System.out.printlnの意味がよ...
-
Javaで改行などが出来ないのです。
-
System.err. printlnとSystem.o...
-
eclipseに記述したjavaファイル...
-
Java配列でNullPointerExceptio...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
Junitテストでvoid戻り値メッソ...
-
C#で、あるクラスのメンバーす...
-
C#でのWNetAddConnection3の使...
-
C# visibleプロパティをfalseに...
-
unityでのC++エラーの原因がわ...
-
ボタンの複数割り当てについて
-
C#で別のFormへ複数の値を返そ...
-
エンターキーを押すとOKボタン...
-
LVM_SETITEMSTATEでListViewの...
-
ユーザーコントロールを動的に...
-
[C#.net]スレッド化された別フ...
-
C# 矢印キーの取得
-
C#から、C++で作成したdll内の...
-
C# DataGridView列カスタマイズ
-
C#でキーイベントが発生しない...
-
Thread.sleepのInterruptedExce...
-
C#でのオブジェクトのコピーに...
-
C# 半角カナの文字化けについて
-
文字列の置換
おすすめ情報