我是图形用户界面的新手,在以下问题上有困难。我有3个JTextFields,信用卡号码,有效期和安全号码。我可以将信息输入到字段中。我还为每个按钮实现了焦点侦听器。如果我单击它,它会显示获得焦点,如果我单击其他任何地方,它会失去焦点。在这些文本字段下,我有一个数字键盘(触摸屏/鼠标单击)来输入数字。我如何保持对特定文本字段的焦点,直到仅特定地单击另外两个文本字段中的一个?一旦我尝试单击输入数字,当前具有焦点的文本字段将失去焦点。我不希望这种情况发生。我在网上搜索了一下,但没有找到与我的案子相关的具体信息。任何帮助或提示都将不胜感激。
除了@Hovercrafts suggestion(1)之外,您可能还需要扩展TextAction
,以便在文本字段中插入数字。TextAction
允许您访问具有焦点的最后一个文本字段,因此插入代码变得非常通用:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.text.*;
public class NumpadPanel extends JPanel
{
public NumpadPanel()
{
setLayout( new BorderLayout() );
JTextField textField1 = new JTextField(4);
JTextField textField2 = new JTextField(2);
JTextField textField3 = new JTextField(2);
JPanel panel = new JPanel();
panel.add( textField1 );
panel.add( textField2 );
panel.add( textField3 );
add(panel, BorderLayout.PAGE_START);
Action numberAction = new TextAction("")
{
@Override
public void actionPerformed(ActionEvent e)
{
JTextComponent textComponent = getFocusedComponent();
if (textComponent != null)
textComponent.replaceSelection(e.getActionCommand());
}
};
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout( new GridLayout(0, 5) );
add(buttonPanel, BorderLayout.CENTER);
for (int i = 0; i < 10; i++)
{
String text = String.valueOf(i);
JButton button = new JButton( text );
button.addActionListener( numberAction );
button.setMargin( new Insets(20, 20, 20, 20) );
button.setFocusable( false );
buttonPanel.add( button );
}
// Optionally auto tab when text field is full
//SizeDocumentFilter sf = new SizeDocumentFilter();
//sf.installFilter(textField1, textField2, textField3);
}
private static void createAndShowUI()
{
JFrame frame = new JFrame("Numpad Panel");
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.add( new NumpadPanel() );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
您可能还想考虑使用文本字段自动选项卡,以便随着文本字段变满,焦点从一个文本字段移动到另一个文本字段。
myJButton.setFocusable(false);
或者如果在allMyButtons
集合中有一组按钮:
for (JButton button: allMyButtons) {
button.setFocusable(false);
}
就这样。
如何让我的动作监听器单击按钮并将按钮文本显示到文本区域? 在actionlistener之后初始化,因此当我尝试定义
Javascript(jQuery)代码 HTML/EJS代码 我读过的一些不起作用的帖子: 如何在单击按钮时通过动画显示视图? 尝试在单击按钮时显示div
我正在使用javascript(extensions chrome)在程序“Atom”中制作一个机器人,并希望点击按钮“添加到购物车”。我的html是。我猜我在使用值时需要这样做。怎么做?
如何在无限次或动态地单击按钮时添加新的?或者简单地说,如何执行添加更多按钮的功能? 我在Javafx中尝试过,但它只是在列表中添加了两个按钮。 但我必须动态添加,直到用户想要添加/按下上一个按钮
我在一个页面上有几个html控件和一个搜索按钮。当用户在输入控件之外时(即焦点不在输入控件内),如果用户按enter键,我想触发搜索按钮的单击事件。搜索按钮不是按钮,也不在内 目前我正在做这个
我用的是Android Studio2.2,最小sdk的项目是23。 请帮助我做所需的代码。