Java Swing 按钮颜色
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3420311/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Java Swing button colors
提问by Deepak
I am using NET Beans IDE for developing my application in LINUX. I have used synthetica package to generate new look and feel. All is well till now.
我正在使用 NET Beans IDE 在 LINUX 中开发我的应用程序。我使用了合成包来生成新的外观和感觉。到目前为止一切都很好。
Now my next stage is to add colors to buttons when some database status changes.
现在我的下一阶段是在某些数据库状态更改时为按钮添加颜色。
For example:
例如:
In a restaurant i have 2 tables and when 8 people came in to dine and i will create 2 table in my software since the people are unattended i want the buttons to those 2 tables to be green. When the order is processed for any of those tables the button color of the processed table should be changed to orange. When it is under processing it should be flashing color. How to do this in java ? I will take care of database update i just want to know how to change the colors of the buttons and adding flashing technique.
在一家餐厅,我有 2 张桌子,当 8 个人进来用餐时,我将在我的软件中创建 2 张桌子,因为人们无人看管,我希望这 2 张桌子的按钮是绿色的。当为这些表中的任何一个处理订单时,已处理表的按钮颜色应更改为橙色。当它在加工中时,它应该是闪烁的颜色。如何在 java 中做到这一点?我将负责数据库更新,我只想知道如何更改按钮的颜色和添加闪烁技术。
采纳答案by trashgod
Here is a question and several answersrelated to flashing a component.
这是与刷新组件相关的一个问题和几个答案。
Addendum: You can learn more in the article How to Use Buttons. In particular, you can use setForeground()
to change the color of a button's text, but the corresponding setBackground()
doesn't read well on some platforms. Using a Border
is one alternative; a colored panel, shown below, is another.
附录:您可以在文章如何使用按钮中了解更多信息。特别是,您可以使用setForeground()
更改按钮文本的颜色,但相应的setBackground()
在某些平台上阅读效果不佳。使用 aBorder
是一种选择;一个彩色面板,如下所示,是另一个。
package overflow;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class ButtonTest extends JPanel implements ActionListener {
private static final int N = 4;
private static final Random rnd = new Random();
private final Timer timer = new Timer(1000, this);
private final List<ButtonPanel> panels = new ArrayList<ButtonPanel>();
public ButtonTest() {
this.setLayout(new GridLayout(N, N, N, N));
for (int i = 0; i < N * N; i++) {
ButtonPanel bp = new ButtonPanel(i);
panels.add(bp);
this.add(bp);
}
}
@Override
public void actionPerformed(ActionEvent e) {
for (JPanel p : panels) {
p.setBackground(new Color(rnd.nextInt()));
}
}
private static class ButtonPanel extends JPanel {
public ButtonPanel(int i) {
this.setBackground(new Color(rnd.nextInt()));
this.add(new JButton("Button " + String.valueOf(i)));
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame("ButtonTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ButtonTest bt = new ButtonTest();
f.add(bt);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
bt.timer.start();
}
});
}
}