JButton在翻转时具有不同的外观。那个外观不同于"选择"外观
我想显示我的按钮"好像"它被翻过来,以便用户明白如果他按下Return键,那个按钮就会被触发。
问题与设置默认按钮不同,因为我处于这样一种情况,我真的想让用户明白,虽然他不会指望它,如果他点击进入那个按钮将是活性。以下是有关那些想要的人的更多细节。默认设置按钮会使按钮成为默认按钮,但不会向用户发出重要信号。
在我的情况下,足够强的信号是按钮在翻转时的外观。
怎么做?
有关情况的更多细节,对于那些想要一些人:
答案 0 :(得分:0)
根据您的问题,您真正想要的是JRootPane#setDefaultButton
,它会以特定于操作系统的方式突出显示按钮,如果用户按下默认的“操作”键(在大多数情况下输入) )将其称为ActionListener
例如......
“普通”按钮只是普通的JButton
,Hacked
将rollOver
设置为已启用,Default
已设置为{的默认按钮{1}}
正如你所看到的,你建议修复在MacOS上什么也不做,不知道它在其他平台上会做什么
我建议您查看How to Use Root Panes了解更多详情
JRootPane
因此使用import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private JButton asDefault = new JButton("Default");
public TestPane() {
JButton hack = new JButton("Hacked");
hack.getModel().setRollover(true);
hack.setRolloverEnabled(true);
asDefault.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Defaulted");
}
});
add(new JButton("Normal"));
add(hack);
add(asDefault);
}
@Override
public void addNotify() {
super.addNotify();
JRootPane rootPane = SwingUtilities.getRootPane(this);
if (rootPane != null) {
rootPane.setDefaultButton(asDefault);
}
}
}
}
并不适用于所有平台,并且在这些平台上它可以正常工作,我怀疑用户只需要移动鼠标就可以将其恢复正常
答案 1 :(得分:-2)
button.getModel().setRollover(true);