2013-06-28 179 views
-1

所以我当我点击我的JFrame的一个按钮,我想按钮来更改它的背景,只要点击它。有人可以帮忙吗?当按钮被点击,我希望按钮背景改变

谢谢!

+0

没有用过任何东西出来呢。我是一名新秀。所以我不知道该怎么去做。 – WhiplashOne

+1

请阅读http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html尝试一些内容,如果遇到任何问题而不提问。 –

回答

2

当按下按钮,我想在按下按钮前的按钮,背景改变

enter image description here

按钮被按下后:

enter image description here

import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class Test { 

    public static void main(String[] args) { 
     createAndShowJFrame(); 
    } 

    public static void createAndShowJFrame() { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 

       JFrame frame = createJFrame(); 
       frame.setVisible(true); 

      } 
     }); 
    } 

    private static JFrame createJFrame() { 
     JFrame frame = new JFrame("Test"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     ActionListener al = new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent ae) { 

       JButton btn = ((JButton) ae.getSource());//get the button that was clicked 

       //set its background and foreground 
       btn.setBackground(Color.RED); 
       btn.setForeground(Color.GREEN); 
      } 
     }; 

     JButton b = new JButton("Test"); 
     b.addActionListener(al); 

     frame.add(b); 

     frame.pack(); 

     return frame; 
    } 
} 
+0

@WlashlashOne参见[JButton.getModel.addChangeListener](http://stackoverflow.com/a/5755124/714968),或者在JButton API中实现相同的方法,isPressed – mKorbel

2

您可以通过多种方式实现此目的。以下是为所有按钮应用按钮选择颜色的示例片段。

UIManager.put("Button.select", new ColorUIResource(255, 0, 0)); 
JButton button = new JButton("Submit"); 
JFrame frame = new JFrame("JButton select color"); 
frame.add(button); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setSize(300, 80); 
frame.setVisible(true); 
+0

1)Swing组件应该在EDT上创建和操作。 2)不建议调用'JFrame'的'setSize',而是使用'LayoutManager'并且调用'pack()'来代替'setSize'。 3)而是“JFrame.DISPOSE_ON_CLOSE”,否则它将完全退出应用程序,而不管其他窗口或线程是否打开。 4)OP没有说所有的按钮(但当然他/她可能只是省略了) –

+0

+1虽然我不知道OP是否希望按钮在点击后改变,或者只有按住按钮时 –

2

一个JToggleButton可能是非常理想的,在Swing JToolbarButton pressing 请注意,您将需要添加一些代码,以确保一个按钮,只有点击一次,如图所示。

或者,您也可以使用标准JButton并致电AbstractButton.setDisabledIcon(Icon).单击时禁用该按钮,并且它将翻转到备用图标。

+0

+1 JToggleButton中 –