标签: jbutton

如何更改鼠标按下时的JButton颜色?

我希望根据鼠标事件(鼠标进入,退出,按下等)获得自定义颜色.所以要做到这一点,我写了下面的代码.它对一切都很好,除了鼠标按下事件的情况,什么都不做.它只有当我覆盖在色彩的作品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)

java swing mouseevent jbutton

14
推荐指数
3
解决办法
6万
查看次数

13
推荐指数
2
解决办法
2万
查看次数

使用AwesomeFont中的自定义字体和Java Swing中的unicode字符向JButton添加图标?

我有一个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)

这就是我得到的.没有.

一个JButton

任何帮助深表感谢.

编辑:见下面的答案.

java fonts swing jbutton font-awesome

13
推荐指数
1
解决办法
3764
查看次数

布局似乎有些问题,JButton在调整窗口大小时显示出意外行为

JRE版本1.7更新3

预期的行为

当我运行该程序时,它按预期工作,一切顺利.当我点击STOP JButton动画停止并且同一文本JButton改变为START.现在当我点击时BALL COLOUR JButton,BALL变化的颜色以及变化的颜色BALL COLOUR JBUTTON也会变化BALL.如果我按原样运行我的应用程序而不调整大小,则整个行为都有效.

意外行为

但当RESIZEJFrame通过拉动时Right Side,那就是当我的应用程序的意外行为被显示时,在某种意义上说,如果我按下STOP JButton然后单击BALL COLOUR按钮,JButton之前单击的文本更改为的文本STARTSTOP在不应该更改时再次更改为当它应该改变为球的颜色时,以及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)

java swing resize jframe jbutton

13
推荐指数
3
解决办法
6135
查看次数

为什么Java doClick()在调用doClick(pressTime)时使用68毫秒?

doClick()它调用时doClick(pressTime)它发送68毫秒?为什么他们决定68而不是更多的数字呢?这是一个完全随意的数字吗?

来自Java AbstractButton:

public void doClick() {
    doClick(68);
}
Run Code Online (Sandbox Code Playgroud)

java swing delay jbutton visual-artifacts

13
推荐指数
1
解决办法
390
查看次数

如何在我的Java应用程序中将Enter指定为所有JButton的触发键?

我正在使用Metal外观编写Java Swing应用程序.每次我的应用程序中都有JButton时,用户使用Tab键将焦点移动到按钮,然后按Enter键.什么都没发生!如果他按下Space键,则会触发按钮事件.如何指定Enter键以触发与Space键相同的事件?谢谢您的帮助.

java events swing jbutton

12
推荐指数
1
解决办法
2万
查看次数

如何制作简单平面风格的JButton?

什么是最简单的方法,使JButton只显示背景颜色?我不需要任何其他效果,如边框,3D外观或悬停突出显示.

提前致谢.

java swing jbutton

12
推荐指数
3
解决办法
5万
查看次数

JButtons中的单词换行

是否有可能在JButtons中实现文本的自动换行?我在运行时创建的动态按钮很少.我想在按钮上放置自动换行功能,这样我就可以在按钮上看到更好的测试.有可能吗?

java swing jbutton

12
推荐指数
2
解决办法
2万
查看次数

把JButton放在右下角

我需要在一个空的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)

java swing jbutton

11
推荐指数
1
解决办法
2万
查看次数

如何使Java JButton在视觉上用触摸屏压下?

我有一个简单的Swing GUI,JButton在带有触摸屏的Surface平板电脑上运行.按钮有ActionListeners.从鼠标单击这些按钮时,它们会在视觉上正确按下.然而,当他们在触摸屏上轻敲时,它们在视觉上保持相同但仍然会触发actionPerformed().如果他们是双击,那么他们在视觉上正确压下但是开火2 actionPerformed()秒.

是否有一种方法可以在按下按钮时进行此按钮动画更改,而不是单击?我已经对它进行了测试,我可以使用MouseListener并放入所有逻辑,mouseClicked()但要求触摸屏用户双击按钮并不是很优雅.

java swing touchscreen jbutton

11
推荐指数
1
解决办法
870
查看次数