requestFocusInWindow()
과 grabFocus()
메서드의 차이점을 알고 싶습니다. 둘 다이 프로그램에서 나에게 초점을 잡는 데는 잘 작동한다. 따라서, 나는 그 차이를 이해할 수 없었다.스윙에서 requestFocusInWindow()와 grabFocus() 사이의 차이
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Focus extends JFrame
{
JButton jb;
public Focus()
{
createAndShowGUI();
}
private void createAndShowGUI()
{
setTitle("grabFocus() vs requestFocusInWindow()");
setLayout(new FlowLayout());
setSize(400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb=new JButton("Open Dialog");
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
showDialog();
}
});
add(jb);
}
private void showDialog()
{
JDialog jd=new JDialog();
jd.setLayout(new GridLayout(2,2));
jd.setVisible(true);
JLabel l1=new JLabel("Label 1");
JLabel l2=new JLabel("Label 2");
JTextField jt1=new JTextField(20);
JTextField jt2=new JTextField(20);
jd.add(l1);
jd.add(jt1);
jd.add(l2);
jd.add(jt2);
// Both of them are doing the thing
//jt2.grabFocus();
jt2.requestFocus();
jd.pack();
}
public static void main(String args[])
{
SwingUtilities.invokeLater(new Runnable(){
public void run()
{
new Focus();
}
});
}
}
당신이이 포스트에서 실제 게시물을 언급하지는 못했지만 __grabFocus()는 사용되지 않습니다 .__ 청구를 확고히하기 위해 [Java 문서] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#grabFocus())의 라인 - __ "이 메소드는 의도 된 것입니다. 클라이언트 코드는이 메소드를 사용해서는 안되며 대신 requestFocusInWindow() "__ -1을 사용해야합니다. ( –
) 부모가없는 JDialog (내 명령 참조), 다시 invokeLater에 래핑되지 않은 상태에서 JDialog 포커스 소유자 (EDT 이벤트 다발)이며 포커스를 JDialogs 하위에 설정할 수 없으며 포커스를 JFrame – mKorbel
@nIcEcOw로 되돌립니다.하지만 질문은'requestFocusInWindow()'와'grabFocus()'의 차이점에 대해서만 설명합니다. OP는'grabFocus()'가 사용되지 않을지 결코 묻지 않았습니다. 추가 정보가없는 답변은 StackOverflow에서 투표 할 수 있습니까? 그냥 알고 싶습니다!;) – user12458