今天我在玩Jtabbenpane的时候,我注意到一个奇怪的(在我看来)错误,这没有任何意义......因为我正在寻找这个超过2个小时,所以无法在网上找到任何东西
看看这个:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.UnsupportedLookAndFeelException;
@SuppressWarnings("serial")
public class WhatTheHeck extends JPanel {
private final JTabbedPane pane = new JTabbedPane();
public WhatTheHeck() {
setLayout(new BorderLayout());
pane.addTab("1", new JTextField("first tf"));
pane.addTab("2", new JTextField("second tf"));
add(pane);
}
private void display() {
JFrame f = new JFrame("TabColors");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.setSize(new Dimension(300, 300));
// f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new WhatTheHeck().display();
}
});
}
}
我正在编辑第一个并切换到第二个标签。一切都好。
无论其!
如果我编辑第一个文本字段,当我正在编辑它时,我使用alt + shift ...(Windows 7)更改我的键盘语言(从英语到希腊语或反之亦然)并更改为第二个选项卡,我正在获取以下stacktrace:
线程中的异常" AWT-EventQueue-0" java.awt.IllegalComponentStateException:必须显示组件 屏幕确定其位置 java.awt.Component.getLocationOnScreen_NoTreeLock(未知来源)at java.awt.Component.getLocationOnScreen(未知来源)at javax.swing.text.JTextComponent中的$ InputMethodRequestsHandler.getTextLocation(未知 来自)sun.awt.im.InputMethodContext.getTextLocation(未知 来源)在sun.awt.windows.WInputMethod $ 1.run(未知来源)at java.awt.event.InvocationEvent.dispatch(未知来源)at java.awt.EventQueue.dispatchEventImpl(未知来源)at java.awt.EventQueue.access $ 500(未知来源)at java.awt.EventQueue $ 3.run(未知来源)at java.awt.EventQueue $ 3.run(未知来源)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(未知 来源)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(未知 来自)java.awt.EventQueue $ 4.run(未知来源)at java.awt.EventQueue $ 4.run(未知来源)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(未知 来自)java.awt.EventQueue.dispatchEvent(未知来源)at java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源)at at java.awt.EventDispatchThread.pumpEventsForFilter(未知来源)at java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源)at java.awt.EventDispatchThread.pumpEvents(未知来源)at java.awt.EventDispatchThread.pumpEvents(未知来源)at java.awt.EventDispatchThread.run(未知来源)
我猜测有什么东西可以改变我的键盘语言吗?
有没有办法避免出现此错误?