のJButtonの背景色を設定するには、あなたはsetBackground(Color)
を使用することができます。
ボタンを切り替える場合は、ボタンにActionListener
を追加する必要があります。クリックすると変更されます。あなたはではありませんはMouseListener
を使用する必要があります。
私がここで行ったことは、ボタンをクリックするたびに自分自身を反転させるブール値を設定することです。 (TRUEはFALSEになり、FALSEはクリック時にTRUEになります)。これを達成するためにXORが使用されています。
元のJButtonより多くのプロパティが必要なので、JButton
から拡張して独自のプロパティをカスタマイズできます。
このようにすると、JComponentsの利点を楽しむことができます。同時に、独自の機能を追加することもできます。私のカスタマイズされたボタンの
例:
:コードを駆動するためにランナークラス
class DrawingSpace extends JPanel{
private ToggleButton btn;
public DrawingSpace(){
setLayout(new BorderLayout());
setPreferredSize(new Dimension(200, 200));
btn = new ToggleButton("Toggle Button");
setComponents();
}
private void setComponents(){
add(btn);
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
btn.toggle(); //change button ON/OFF status every time it is clicked
}
});
}
}
:カスタマイズされたボタンを含むためのJPanelの
class ToggleButton extends JButton{
private Color onColor;
private Color offColor;
private boolean isOff;
public ToggleButton(String text){
super(text);
init();
updateButtonColor();
}
public void toggle(){
isOff ^= true;
updateButtonColor();
}
private void init(){
onColor = Color.YELLOW;
offColor = Color.RED;
isOff = true;
setFont(new Font("Arial", Font.PLAIN, 40));
}
private void updateButtonColor(){
if(isOff){
setBackground(offColor);
setText("OFF");
}
else{
setBackground(onColor);
setText("ON");
}
}
}
例
class ButtonToggleRunner{ public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ JFrame f = new JFrame("Toggle Colors"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new DrawingSpace()); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } }); } }
** ActionPerformed **メソッドを最初に(デフォルトで)使用しようとしましたか?変更する前に、毎回**ボタンのカラーゲッター**でカラーをチェックしますか? –
ここでマウスリスナーが必要な理由がわかりません。あなたのJButtonにアクションリスナーを使用するだけです。 – KyleKW
より良いヘルプをすぐに投稿してください[mcve] – Frakcool