Java 在不执行操作的情况下更改jframe属性?
我试图使用jnativehook制作一个热键程序,但是当我按下一个键(外焦距)时,我无法改变按钮的颜色。按键和一切工作正常,但我猜它需要执行某种操作来“刷新”gui 目前,我只有一个简单的监听器,只要按下f12,它就会转到setstartbtn函数:Java 在不执行操作的情况下更改jframe属性?,java,swing,Java,Swing,我试图使用jnativehook制作一个热键程序,但是当我按下一个键(外焦距)时,我无法改变按钮的颜色。按键和一切工作正常,但我猜它需要执行某种操作来“刷新”gui 目前,我只有一个简单的监听器,只要按下f12,它就会转到setstartbtn函数: boolean s = false; public void nativeKeyPressed(NativeKeyEvent nke) { if (nke.getKeyCode() == NativeKeyEvent.VC
boolean s = false;
public void nativeKeyPressed(NativeKeyEvent nke) {
if (nke.getKeyCode() == NativeKeyEvent.VC_F12){
setstartbtn();
}
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public void setstartbtn(){
jButton1.setBackground(Color.red);
jstartlabel.setForeground(Color.red);
mainrot = false;
}
如果我将第二个功能分配给按钮本身,那么它工作正常
这是同一个问题,例如,如果我有一个倒计时计时器,当计时器从10达到0时,按钮应该变成绿色,但它没有,所以我猜它需要执行操作
任何帮助都将不胜感激
编辑:以下是完整的项目:
如果重新验证不起作用,请尝试重新绘制()。为了更快地获得更好的帮助,请发布or。我将从一些调试语句开始,并确保您的方法实际上以您期望的方式被调用。是的,它被调用很好,甚至进入了挫折阶段,但不会更新gui。重新验证或重新绘制似乎也没有任何作用(单独在中尝试,并在按钮本身上尝试)。
setBackground
是绑定属性,意味着它应该设置自己的repaint
,revalidate
与更新布局的关系比其他任何事情都要大。我建议从System.out.println
开始,以确保调用了该方法,并在攻击repaint
或revalidate
之前验证对象的实例是否与屏幕上的实例相同-IMHOIt将很好地使用该方法,甚至调试并调用所有内容。我在主主题中添加了完整的项目。我下载了您的项目,似乎您需要jButton1.setOpaque(true);使红色背景可见。(注I仅使用回转组件进行测试)
public void setstartbtn(){
jButton1.setBackground(Color.red);
jstartlabel.setForeground(Color.red);
mainrot = false;
revalidate();
repaint();
}