急,难道组件自动获得焦点问题真的是这么难吗? 先把JInternalFrame setSelected再对JText setFocus 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我发现有的时候就是对JTextField使用了方法requestFocus(),也不能得到想要的焦点,尤其是对于JTextField不处于界面的第一个位置的时候,譬如:界面中JLabel1 JTextField1JLabel2 JTextField2此时,JTextField1可以自动获得焦点,但是要想将焦点设到JTextField2,光使用requestFocus()方法有时就是没法得到想要的,不知大家遇到没有?尤其对于子对话框的情况,难道必须用脚本实现么?请高人不吝赐教 当 JInternalFrame 弹出来的时候,internalFrameOpened(InternalFrameEvent e)此事件并没有发生。要使用 setSelected 方法,使 internalFrameOpened(InternalFrameEvent e)此事件发生,但由于使用Menu这种方式弹出 JInternalFrame 窗口,setSelected() 方法引用不了。不知道怎么解决。 必须在JInternalFrame的Activate之后,setSelected,再requestFocus 有一个另类的做法。当程序init完成以后,在EventQueue中模拟一个在JTextField中的点击事件 这个东西以前有人问过我,在JInternalFrame的Activate之后,setSelected, 再requestFocus 就行,很简单 回复DanielYWoo(绿色毒汁)是setSelected, 再requestFocus 就行,但setSelected()方法引用不了。 有两类,一个类是Menu,一个类是JInternalFrame.当你单击Menu类的一个MenuItem,就创建以JInternalFrame的一个对象,那么setSelected()方法就既不能在JInternalFrame的对象调用,也不能在Menu对象中调用。 不妨告诉你一个简单的:JTextField.setText("");OK. 这是我以前回复别人用的例子,这个例子中,你点击open,打开两个新窗口程序中用if1.setSelected(true);来使窗口1激活再用txt.requestFocus();来让文本框获得焦点如果忘了先激活窗口1,就设窗口1上的文本矿焦点,你会看到一个有意思的bug,窗口2的Title Bar是蓝色的,表示当前活动窗口,窗口2的Title Bar是灰色的,但是,窗口2的JTextField却可以接受用户输入,呵呵switch1和switch2两个按钮可以切换窗口import java.awt.*;import java.awt.event.*;import javax.swing.*;class QQQ extends JFrame{ JDesktopPane desk = new JDesktopPane(); JInternalFrame if1 = new JInternalFrame(); JInternalFrame if2 = new JInternalFrame(); JButton bt1 = new JButton("Switch 1"); JButton bt2 = new JButton("Switch 2"); JButton btOpen = new JButton("Open"); JTextField txt = new JTextField("I got focus!"); QQQ() { JPanel temp = new JPanel(); temp.add(bt1); temp.add(bt2); temp.add(btOpen); getContentPane().add(temp, BorderLayout.NORTH); getContentPane().add(desk, BorderLayout.CENTER); desk.add(if1); desk.add(if2); if1.getContentPane().add(txt, BorderLayout.NORTH); if1.reshape(10,10,100,100); if2.reshape(30,30,100,100); bt1.addActionListener(new MyListener()); bt2.addActionListener(new MyListener()); btOpen.addActionListener(new MyListener()); setBounds(100,100,400,400); show(); } public static void main(String[] args) { QQQ q = new QQQ(); } class MyListener implements ActionListener { public void actionPerformed(ActionEvent e) { try { if(e.getSource()==bt1) if1.setSelected(true); else if(e.getSource()==bt2) if2.setSelected(true); else{ if1.setVisible(true); if2.setVisible(true); if1.setSelected(true); txt.requestFocus(); } } catch (Exception ex) { } } };} java构造函数问题 为什么后缀名为jsf网页弹出自动关闭?? jdk 可不可在指定目录下加载class文件 大家帮帮忙看看为什么这个代码不对? 菜鸟问题!关于button 不知道有没有中文版的java tips?如果没有我准备翻译一下! 关于JBUILDER7参考书的问题 问几个比较容易的问题,希望大家回答,高分相送,决不食言 请问谁能介绍一下当前有哪些Java组件? 谁看看这个问题会不会? 请教关于匿名类的问题!
譬如:界面中
JLabel1 JTextField1
JLabel2 JTextField2
此时,JTextField1可以自动获得焦点,但是要想将焦点设到JTextField2,光使用requestFocus()方法有时就是没法得到想要的,不知大家遇到没有?
尤其对于子对话框的情况,难道必须用脚本实现么?
请高人不吝赐教
internalFrameOpened(InternalFrameEvent e)
此事件并没有发生。
要使用 setSelected 方法,使
internalFrameOpened(InternalFrameEvent e)
此事件发生,但由于使用Menu这种方式
弹出 JInternalFrame 窗口,setSelected() 方法引用不了。
不知道怎么解决。
再requestFocus
setSelected, 再requestFocus 就行,很简单
是setSelected, 再requestFocus 就行,
但setSelected()方法引用不了。
当你单击Menu类的一个MenuItem,就创建以JInternalFrame的一个对象,
那么setSelected()方法就既不能在JInternalFrame的对象调用,
也不能在Menu对象中调用。
这个例子中,你点击open,打开两个新窗口
程序中用if1.setSelected(true);来使窗口1激活
再用txt.requestFocus();来让文本框获得焦点如果忘了先激活窗口1,就设窗口1上的文本矿焦点,
你会看到一个有意思的bug,窗口2的Title Bar是蓝色的,
表示当前活动窗口,窗口2的Title Bar是灰色的,但是,
窗口2的JTextField却可以接受用户输入,呵呵switch1和switch2两个按钮可以切换窗口import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class QQQ extends JFrame
{
JDesktopPane desk = new JDesktopPane();
JInternalFrame if1 = new JInternalFrame();
JInternalFrame if2 = new JInternalFrame();
JButton bt1 = new JButton("Switch 1");
JButton bt2 = new JButton("Switch 2");
JButton btOpen = new JButton("Open");
JTextField txt = new JTextField("I got focus!"); QQQ()
{
JPanel temp = new JPanel();
temp.add(bt1);
temp.add(bt2);
temp.add(btOpen);
getContentPane().add(temp, BorderLayout.NORTH);
getContentPane().add(desk, BorderLayout.CENTER);
desk.add(if1);
desk.add(if2);
if1.getContentPane().add(txt, BorderLayout.NORTH);
if1.reshape(10,10,100,100);
if2.reshape(30,30,100,100);
bt1.addActionListener(new MyListener());
bt2.addActionListener(new MyListener());
btOpen.addActionListener(new MyListener());
setBounds(100,100,400,400);
show();
} public static void main(String[] args)
{
QQQ q = new QQQ();
}
class MyListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{
if(e.getSource()==bt1)
if1.setSelected(true);
else if(e.getSource()==bt2)
if2.setSelected(true);
else{
if1.setVisible(true);
if2.setVisible(true);
if1.setSelected(true);
txt.requestFocus();
}
}
catch (Exception ex)
{
} }
};
}