我正在创建一个扩展为JPanel
的类。有几个textareas和下拉列表,我在该面板中使用了GridBagConstraints
。现在我想使用键盘的Tab键将一个字段移动到另一个字段。我还想提一下之前的标签键是扩展textareas。如何使用标签键使用swing将一个字段移动到另一个字段?
这就是为什么我写这行:restuarantLocation.setTabSize(0);
现在它停止扩大。
但我不知道如何使工作tab键?请帮忙。
我正在创建一个扩展为JPanel
的类。有几个textareas和下拉列表,我在该面板中使用了GridBagConstraints
。现在我想使用键盘的Tab键将一个字段移动到另一个字段。我还想提一下之前的标签键是扩展textareas。如何使用标签键使用swing将一个字段移动到另一个字段?
这就是为什么我写这行:restuarantLocation.setTabSize(0);
现在它停止扩大。
但我不知道如何使工作tab键?请帮忙。
如果内置Tab键不起作用,您可能需要查看关于焦点遍历的Java教程。
http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html
谢谢。但我需要解决方案。我几乎没有关于swing的想法。但仍然thnks.I正在通过链接。:) – user1568579
@ user1568579 _I需要解决方案_我们需要一个更清晰的问题来展示非工作代码的具体示例。发布[SSCCE](http://sscce.org),您的帖子上的答案将会下雨。 –
@ user1568579并在此评论[请阅读StackOverflow FQA](http://stackoverflow.com/faq) – mKorbel
当你按下TAB任何文本区域里面 - 它创造的制表符。所以你的代码setTabSize(0)
不能解决任何问题 - 它只是将制表宽度设置为零。
如果您只是在寻找焦点更改热键 - Ctrl + Tab将在任何Swing文本组件中运行而不是简单的TAB,并将焦点切换到下一个可用和可聚焦组件。 Ctrl + Shift + TAB将焦点切换到先前可用和可聚焦的组件。
如果您想TAB以相同的方式充当其他Swing组件 - 您可以添加您的自定义标签的行动:
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable()
{
public void run()
{
JFrame frame = new JFrame();
frame.setLayout (new GridLayout (1, 2));
AbstractAction transferFocus = new AbstractAction()
{
public void actionPerformed (ActionEvent e)
{
((Component) e.getSource()).transferFocus();
}
};
JTextArea textArea1 = new JTextArea();
textArea1.getInputMap().put (KeyStroke.getKeyStroke ("TAB"), "transferFocus");
textArea1.getActionMap().put ("transferFocus", transferFocus);
frame.add (new JScrollPane (textArea1));
JTextArea textArea2 = new JTextArea();
textArea2.getInputMap().put (KeyStroke.getKeyStroke ("TAB"), "transferFocus");
textArea2.getActionMap().put ("transferFocus", transferFocus);
frame.add (new JScrollPane (textArea2));
frame.setSize (500, 200);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo (null);
frame.setVisible (true);
}
});
}
请注意,您必须:
谢谢洛特。我可以使用jpanel而不是jframe吗? – user1568579
@ user1568579添加文本区域的位置并不重要 –
使用此示例:
Vector vector=new Vector(3);
vector.Add(textBox1);
vector.Add(textBox2);
vector.Add(textBox3);
clsTabOrder newPolicy=new clsTabOrder(vector);
setFocusTraversalPolicy(newPolicy);
textBox1.requestFocus();
第一个代码行是:Vector vector = new Vector(3); –
建议http://stackoverflow.com/help/formatting可能会帮助您制作更好的格式。 – CrazyCasta
说明:是否要使用TAB键从一个组件移到另一个组件? – davidXYZ
如果你想在“JTextArea”中“禁用”TAB键的默认行为,你可以看看[这篇文章](http://stackoverflow.com/questions/5042429/how-can-i-modify -the-behavior-of-the-tab-key-in-a-jtextarea) – MadProgrammer