[英]Giving one JButton two different actions
我對Java還是很陌生,不了解可以用來實現自己想做的事情的方法。 我需要制作一個模擬電燈開關的程序。 一個按鈕可以打開和關閉燈。 在事件觸發前和觸發后,我將背景色設置為深灰色。 我的問題是,背景為黃色時,如何使用同一按鈕將其更改回深灰色?
我的代碼:
import javax.swing.JApplet;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Question2 extends JApplet implements ActionListener {
public void init() {
Container contentPane = getContentPane();
contentPane.setBackground(Color.DARK_GRAY);
contentPane.setLayout(new FlowLayout());
JButton OnOffSwitch = new JButton("On/Off");
contentPane.add(OnOffSwitch);
OnOffSwitch.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
Container contentPane = getContentPane();
if (e.getActionCommand().equals("On/Off"))
contentPane.setBackground(Color.YELLOW);
else
contentPane.setBackground(Color.DARK_GRAY);
}
}
EG(使用此答案中的圖像)。
import java.awt.*;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.net.URL;
class ToggleButtons {
public static void main(String[] args) throws Exception {
URL offUrl = new URL("http://i.stack.imgur.com/gJmeJ.png");
URL onUrl = new URL("http://i.stack.imgur.com/5v2TX.png");
final Image offImg = ImageIO.read(offUrl);
final Image onImg = ImageIO.read(onUrl);
Runnable r = new Runnable() {
@Override
public void run() {
int s = 5;
JPanel gui = new JPanel(new GridLayout(s, s));
Icon offIcon = new ImageIcon(offImg);
Icon onIcon = new ImageIcon(onImg);
for (int ii=0; ii<s*s; ii++) {
JToggleButton tb = new JToggleButton(offIcon, ii%2==0);
tb.setSelectedIcon(onIcon);
gui.add(tb);
}
JOptionPane.showMessageDialog(null, gui);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
}
}
有一個boolean
稱為場on
設置為false
boolean on = false;
並且在您的actionPerformed
有這樣的翻轉邏輯
public void actionPerformed(ActionEvent e)
{
Container contentPane = getContentPane();
if (!on) {
contentPane.setBackground(Color.YELLOW);
on = true;
}
else {
contentPane.setBackground(Color.DARK_GRAY);
on = false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.