我希望根据鼠标事件(鼠标进入,退出,按下等)获得自定义颜色.所以要做到这一点,我写了下面的代码.它对一切都很好,除了鼠标按下事件的情况,什么都不做.它只有当我覆盖在色彩的作品UIManager是这样UIManager.put("Button.select", Color.red);.问题UIManager是,它会改变我的所有按钮.
任何人都可以告诉我,我可能做错了什么,或者最好的方法是什么,我想要做什么?
我的代码:
final JButton btnSave = new JButton("Save");
btnSave.setForeground(new Color(0, 135, 200).brighter());
btnSave.setHorizontalTextPosition(SwingConstants.CENTER);
btnSave.setBorder(null);
btnSave.setBackground(new Color(3, 59, 90));
btnSave.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
btnSave.setBackground(new Color(3, 59, 90));
}
@Override
public void mousePressed(MouseEvent e) {
// Not working :(
btnSave.setBackground(Color.pink);
}
@Override
public void mouseExited(MouseEvent e) {
btnSave.setBackground(new Color(3, 59, 90));
}
@Override
public void mouseEntered(MouseEvent e) {
btnSave.setBackground(new Color(3, 59, 90).brighter());
}
@Override
public void mouseClicked(MouseEvent e) { …Run Code Online (Sandbox Code Playgroud) 我想改变JButton渐变色,我发现这个,http://java2everyone.blogspot.com/2009/01/set-jbutton-gradient-color.html,但我想只改变一个按钮的渐变,而不是所有的按钮
我有一个JButton,我想添加一个图标.我想使用FontAwesome中提供TrueType字体文件的基于字体的图标.我想添加的图标是播放按钮图标.FontAwesome的css文件中的播放按钮图标是\f04b我\uf04b在Java中所传达的.
这就是我在IconButton基类的构造函数中加载字体的方法.
public class IconButton extends JButton {
public IconButton() {
try {
InputStream in = this.getClass().getResourceAsStream("/fontawesome-webfont.ttf");
Font ttfBase = Font.createFont(Font.TRUETYPE_FONT, in);
Font ttfReal = ttfBase.deriveFont(Font.BOLD, 24);
setFont(ttfReal);
} catch (FontFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在实现类StartButton中,这是我设置文本的方式.
public class StartButton extends IconButton {
public StartButton() {
setText(String.valueOf('\u0f4b'));
setForeground(Color.BLACK);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我得到的.没有.

任何帮助深表感谢.
编辑:见下面的答案.
JRE版本1.7更新3
预期的行为
当我运行该程序时,它按预期工作,一切顺利.当我点击STOP JButton动画停止并且同一文本JButton改变为START.现在当我点击时BALL COLOUR JButton,BALL变化的颜色以及变化的颜色BALL COLOUR JBUTTON也会变化BALL.如果我按原样运行我的应用程序而不调整大小,则整个行为都有效.
意外行为
但当RESIZE我JFrame通过拉动时Right Side,那就是当我的应用程序的意外行为被显示时,在某种意义上说,如果我按下STOP JButton然后单击BALL COLOUR按钮,JButton之前单击的文本更改为的文本START将STOP在不应该更改时再次更改为当它应该改变为球的颜色时,以及BALL COLOUR JButton将保持不变或将转向BLUE的颜色.我附上照片了解更多信息.但是如果你试图将它重新调整到原来的大小或更接近它,那么事情就会恢复正常.为什么会这样?任何想法或线索将非常感激.
正如我的应用程序运行如上所述的预期行为:

这里是意想不到的行为

底线:
为什么应用程序像往常一样运行BEGINNING,而不是RESIZED通过拖动它RIGHT SIDE,但是如果你把它带到它的原始大小或更接近它,事情恢复正常,它按预期工作?
所以考虑到这个场景,我在程序中做错了什么.或者这正是我应该使用的情况SwingWorker,或者这是一个问题Layout,或隐藏的相关内容Content Pane.请放轻装:-)
这是我正在使用的代码,我把它降到最低限度,因为我想要证明我的问题:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class …Run Code Online (Sandbox Code Playgroud) 在doClick()它调用时doClick(pressTime)它发送68毫秒?为什么他们决定68而不是更多的数字呢?这是一个完全随意的数字吗?
来自Java AbstractButton:
public void doClick() {
doClick(68);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Metal外观编写Java Swing应用程序.每次我的应用程序中都有JButton时,用户使用Tab键将焦点移动到按钮,然后按Enter键.什么都没发生!如果他按下Space键,则会触发按钮事件.如何指定Enter键以触发与Space键相同的事件?谢谢您的帮助.
什么是最简单的方法,使JButton只显示背景颜色?我不需要任何其他效果,如边框,3D外观或悬停突出显示.
提前致谢.
是否有可能在JButtons中实现文本的自动换行?我在运行时创建的动态按钮很少.我想在按钮上放置自动换行功能,这样我就可以在按钮上看到更好的测试.有可能吗?
我需要在一个空的JPanel的右下角放一个按钮
+-----------------------------------+
| |
| |
| |
| |
| |
| |
| |
| |
| +-----------+|
| | Click Me! ||
| +-----------+|
+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)
我怎么做?它应该很容易吗?我想找到正确的布局管理器,而不是使用一系列嵌套面板.
JPanel panel = new JPanel();
panel.setLayout(new SomeKindOfLayoutManagerThatDoesThis());
panel.add(new JButton("Click Me!"), SETTINGS);
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Swing GUI,JButton在带有触摸屏的Surface平板电脑上运行.按钮有ActionListeners.从鼠标单击这些按钮时,它们会在视觉上正确按下.然而,当他们在触摸屏上轻敲时,它们在视觉上保持相同但仍然会触发actionPerformed().如果他们是双击,那么他们在视觉上正确压下但是开火2 actionPerformed()秒.
是否有一种方法可以在按下按钮时进行此按钮动画更改,而不是单击?我已经对它进行了测试,我可以使用MouseListener并放入所有逻辑,mouseClicked()但要求触摸屏用户双击按钮并不是很优雅.
java ×10
jbutton ×10
swing ×10
delay ×1
events ×1
font-awesome ×1
fonts ×1
gradient ×1
jframe ×1
mouseevent ×1
resize ×1
touchscreen ×1