标题:求助:关于图形用户界面设计
只看楼主
herendagao
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-5-3
结帖率:100%
 问题点数:0 回复次数:3 
求助:关于图形用户界面设计
请问一下如何使用focusListener(),我知道它有两个方法,可一个组件怎样才算失去焦点,又怎样才算得到焦点呢?比如JtextArea组件,我的程序中它好象在我点击了菜单后失去了焦点,却不能再获得焦点
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class J_Frame extends JFrame
{
private JMenuBar jmb = new JMenuBar();
private JMenuItem MI[][] = {{new JMenuItem("新建"),new JMenuItem("保存"),
new JMenuItem("打开"),new JMenuItem("另存为"),
new JMenuItem("页面设置"),new JMenuItem("打印"),
new JMenuItem("退出")},{new JMenuItem("复制"),
new JMenuItem("粘贴")},{new JMenuItem("自动换行"),
new JMenuItem("字体")},{new JMenuItem("帮助主题"),
new JMenuItem("关于记事本")}};
private JMenu menu[] = {new JMenu("文件(F)"),new JMenu("编辑(E)"),
new JMenu("格式(O)"),new JMenu("帮助(H)")};
private TextArea jta = new TextArea();
private J_Action jaction = new J_Action();
public J_Frame()
{
jta.setSize(760,550);
for(int i = 0;i < 4;i++)
{
menu[i].addActionListener(jaction);
jmb.add(menu[i]);
for(int j = 0;j < MI[i].length;j++)
{
MI[i][j].addActionListener(jaction);
menu[i].add(MI[i][j]);
}
}
jta.addFocusListener(new FocusListener()//////////////////
{
public void focusLost(FocusEvent e)
{
if(jta.isVisible())
jta.setVisible(false);
}
public void focusGained(FocusEvent e)
{
if(jta.isVisible() == false)
jta.setVisible(true);
}
});
this.getContentPane().add(new JScrollPane(jta));
this.setJMenuBar(jmb);
}
}
class J_Action implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String str = e.getActionCommand();
if(str == "新建")
{
System.exit(0);
}
}
}
public class J_Txt
{
public static void main(String args[])
{
J_Frame frame = new J_Frame();
frame.setTitle("新建文本文档.txt-记事本");
frame.setSize(770,570);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
搜索更多相关主题的帖子: 图形 用户界面 import java new 
2007-04-07 14:35
herendagao
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-5-3
得分:0 
回复:(herendagao)求助:关于图形用户界面设计
    事实上我并不想将JTextArea给设置成不可见状态,知识为了显示菜单条的下拉菜单项,但如果JtextArea处于可见状态,下拉菜单项都被JTextArea给罩住了,我应该怎么处理?

2007-04-07 14:58
zhjjfz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-4-29
得分:0 
TextArea改为JTextArea,菜单显示就全了,JMenuBar是轻权的,而TextArea是重权的,重权有限显示。

GUI设计中最好不要轻权重权组件混用。(java.awt中的组件为重权的,有了Swing最好不要用awt中的GUI组件了)
2007-04-29 10:17
tblovecj
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2006-9-20
得分:0 
要想在失去焦点时再获取焦点你在你的actionListener事件里加一个当某个事件触发时再用一个.requestFucusInWindow()就应该能实现吧!

2007-04-30 02:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-129973-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.938295 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved