| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖
标题:关于java GUI 两个问题
只看楼主 加入收藏
aceghiln
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-30
收藏
 问题点数:0 回复次数:4 
关于java GUI 两个问题

package menu;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
public class TestMenu extends JFrame implements ActionListener,ItemListener{

MenuBar mb;
Menu m1;
Menu m2;
MenuItem mi1;
MenuItem mi2;
MenuItem mi3;
MenuItem mi4;
CheckboxMenuItem cbmi;//复选框菜单
static PopupMenu pm;//弹出式菜单
MenuItem pmi1,pmi2,pmi3;//弹出式菜单项
TextArea ta;
public TestMenu() {
mb = new MenuBar();
m1 = new Menu("颜色");
m2 = new Menu("窗口");
mi1 = new MenuItem("红色");
mi2 = new MenuItem("绿色");
mi3 = new MenuItem("蓝色");
mi4 = new MenuItem("关闭");
cbmi = new CheckboxMenuItem("斜体");

pm = new PopupMenu("弹出市菜单");
ta = new TextArea("弹出式菜单",10,30);
ta.setBounds(40,65,180,80);
this.add(ta);

mb.add(m1);
mb.add(m2);
m1.add(mi1);
m1.add(mi2);
m1.add(mi3);
m1.addSeparator();
m1.add(cbmi);
m2.add(mi4);
this.setMenuBar(mb);

pmi1 = new MenuItem("红色");
pmi2 = new MenuItem("绿色");
pmi3 = new MenuItem("蓝色");
pm.add(pmi1);pm.add(pmi2);pm.add(pmi3);
pmi1.addActionListener(this);
pmi2.addActionListener(this);
pmi3.addActionListener(this);
this.add(pm);
ta.addMouseListener(new MyMouseList());

mi1.addActionListener(this);
mi2.addActionListener(this);
mi3.addActionListener(this);
mi4.addActionListener(this);
cbmi.addActionListener(this);

this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setBounds(300,80,260,170);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
MenuItem mi = (MenuItem)e.getSource();
String miLab = mi.getLabel();
if(miLab == "红色") ta.setForeground(Color.red);
if(miLab == "蓝色") ta.setForeground(Color.blue);
if(miLab == "绿色") ta.setForeground(Color.green);
if(miLab == "关闭") {System.exit(0);}
this.setTitle("设置文字颜色为【"+miLab+"】");

}
public void itemStateChanged(ItemEvent e) {//处理复选框菜单项的方法
boolean yn =cbmi.getState();
if(yn) ta.setFont(new Font("楷体_GB2312",Font.ITALIC,15));
else ta.setFont(new Font("宋体",Font.PLAIN,15));
}
static class MyMouseList extends MouseAdapter{//处理鼠标事件类
public void mouseReleased(MouseEvent mce) { //鼠标释放式发生的事件
if(mce.isPopupTrigger()) { //判断鼠标师傅引发弹出菜单
pm.show((Component)mce.getSource(),mce.getX(), mce.getY());
//(Component)mce.getSource()得到弹出式菜单这个对象
}
}
}
public static void main(String[] args) {
new TestMenu();
}

}



第一个问题:设置斜体没有效果。
第二个问题:右键弹出菜单设置颜色后,有弹出不出不希望的东西,怎么解决?

搜索更多相关主题的帖子: GUI java 
2007-06-05 09:52
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
1, 事件可能没有响应
2,有弹出不出不希望的东西, 是什么意思?

是弹不出你希望弹的东西还是弹出了你不希望弹的东西?

可惜不是你,陪我到最后
2007-06-05 11:34
aceghiln
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-30
收藏
得分:0 
怎么修改让它响应啊
就是你在文本区点右键,设置颜色,马上有弹出了一个快捷菜单,我没有要它弹出快捷菜单啊
2007-06-05 12:08
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

[CODE]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestMenu extends JFrame implements ActionListener,ItemListener{

MenuBar mb;
Menu m1;
Menu m2;
MenuItem mi1;
MenuItem mi2;
MenuItem mi3;
MenuItem mi4;
CheckboxMenuItem cbmi;//复选框菜单
static PopupMenu pm;//弹出式菜单
MenuItem pmi1,pmi2,pmi3;//弹出式菜单项
JTextArea ta;
public TestMenu() {
mb = new MenuBar();
m1 = new Menu("颜色");
m2 = new Menu("窗口");
mi1 = new MenuItem("红色");
mi2 = new MenuItem("绿色");
mi3 = new MenuItem("蓝色");
mi4 = new MenuItem("关闭");
cbmi = new CheckboxMenuItem("斜体");

pm = new PopupMenu("弹出市菜单");
ta = new JTextArea("弹出式菜单",10,30);
ta.setBounds(40,65,180,80);
this.add(ta);

mb.add(m1);
mb.add(m2);
m1.add(mi1);
m1.add(mi2);
m1.add(mi3);
m1.addSeparator();
m1.add(cbmi);
m2.add(mi4);
this.setMenuBar(mb);

pmi1 = new MenuItem("红色");
pmi2 = new MenuItem("绿色");
pmi3 = new MenuItem("蓝色");
pm.add(pmi1);pm.add(pmi2);pm.add(pmi3);
pmi1.addActionListener(this);
pmi2.addActionListener(this);
pmi3.addActionListener(this);
this.add(pm);
ta.addMouseListener(new MyMouseList());

mi1.addActionListener(this);
mi2.addActionListener(this);
mi3.addActionListener(this);
mi4.addActionListener(this);
cbmi.addActionListener(this);

this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setBounds(300,80,260,170);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
MenuItem mi = (MenuItem)e.getSource();
String miLab = mi.getLabel();
if(miLab == "红色") ta.setForeground(Color.red);
if(miLab == "蓝色") ta.setForeground(Color.blue);
if(miLab == "绿色") ta.setForeground(Color.green);
if(miLab == "关闭") {System.exit(0);}
this.setTitle("设置文字颜色为【"+miLab+"】");

}
public void itemStateChanged(ItemEvent e) {//处理复选框菜单项的方法
boolean yn =cbmi.getState();
if(yn) ta.setFont(new Font("楷体_GB2312",Font.ITALIC,15));
else ta.setFont(new Font("宋体",Font.PLAIN,15));
}
static class MyMouseList extends MouseAdapter{//处理鼠标事件类
public void mouseReleased(MouseEvent mce) { //鼠标释放式发生的事件
if(mce.isPopupTrigger()) { //判断鼠标师傅引发弹出菜单
pm.show((Component)mce.getSource(),mce.getX(), mce.getY());
//(Component)mce.getSource()得到弹出式菜单这个对象
}
}
}
public static void main(String[] args) {
new TestMenu();
}

}[/CODE]
那是因为你用的TextArea,它是操作系统原生的组件,所以右键的菜单是WINDOWS帮你弹出的

当你使用了swing的组件以后,就不会发生这种事了

我只帮你改了一个,以后写界面的时候,最好都用javax.swing里面的组件,也就是带J字头的

最好不要去用awt里面的组件


可惜不是你,陪我到最后
2007-06-05 12:21
aceghiln
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-30
收藏
得分:0 

谢谢指教!

2007-06-05 12:49
快速回复:关于java GUI 两个问题
数据加载中...
 
   



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

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