一个模拟记事本的程序,添加了菜单和子菜单,编译无错误,但是没有反应,字体、颜色都不改变,点了read-only后还是可编辑。
另外在doc文档里,java.awt.TextArea里并没有找到setFont、setForeground、setEditable方法,我看的是电子工业的《Java大学教程》,03年版,机器上装的是jdk1.6.0_10。小弟拜谢各位高手。
import java.awt.*;
public class ScratchPad extends Frame
{
private TextArea t;
private Font f;
private Color c;
private CheckboxMenuItem x;

public ScratchPad()
{
super("ScratchPad Application");
t = new TextArea();
add("Center", t);

f = new Font("TimesRoman",Font.PLAIN,12);
t.setFont(f);
t.setForeground(Color.black);

MenuBar bar = new MenuBar();
Menu viewMenu = new Menu("View");
Menu fontMenu = new Menu("Font");
Menu colorMenu = new Menu("Color");

colorMenu.add(new Menu("Black"));
colorMenu.add(new Menu("Blue"));

fontMenu.add("Times Roman");
fontMenu.add("Courier");

viewMenu.add(fontMenu);
viewMenu.add(new MenuItem("-"));
viewMenu.add(colorMenu);
viewMenu.add(new MenuItem("-"));

x = new CheckboxMenuItem("Read-only");
viewMenu.add(x);
x.setState(false);

bar.add(viewMenu);
setMenuBar(bar);
resize(300,200);
show();
}

public boolean handleEvent (Event e)
{
if(e.id == Event.WINDOW_DESTROY)
{
hide();
dispose();
System.exit(0);
return true;
}
return super.handleEvent(e);
}

public boolean action(Event e, Object o)
{
if(e.target instanceof MenuItem)
{
if(e.arg.equals("Times Roman")) f = new Font("TimesRoman",Font.PLAIN,12);
else if(e.arg.equals("Courier")) f = new Font("Courier",Font.PLAIN,12);
else if(e.arg.equals("Black")) c = Color.black;
else if(e.arg.equals("Blue")) c = Color.blue;
else if(e.arg.equals(x.getLabel())) t.setEditable(!x.getState());

t.setForeground(c);
t.setFont(f);
}
return true;
}

public static void main(String args [])
{
ScratchPad e;
e = new ScratchPad();
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【kant1988】截止到2008-08-02 10:54:26的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=kant1988
      

  2.   

    到当当网,搜java书籍,那本卖的好,就ok呗。
    不过最好下点视频,比书好多了。。
    我个人感觉,清华大学出版的还不错,最起码错误没几个吧
    楼下的继续推荐下。
      

  3.   

    参考jdk的文档,不知道的就在上面查。非常方便……
      

  4.   

    一些类包已经过期了,《Java大学教程》,03年版介绍的代码调用的类包和方法与你现在机器上安装的jdk1.6.0_10有很大的出入。
      

  5.   

    由于jdk的版本不一样所导致,具体如下:
    1.第39行的 reSize(300,200),应改成 setSize(300,200);
    2.第40行的 show(), 应改成 setVisible(true);
    3.第57行的 public boolean handleEvent (Event e), 已过时。 
    从 JDK version 1.1 开始,由processEvent(AWTEvent) 取代。
     具体怎么写,在下也不知,因为两个函数的返回类型不一样。我已发问:
      java.awt.Component   的handleEvent(Event   evt)   
       因为我也是初学的业余爱好者。
        建议使用Eclipse,又被替代的Fucntion,会用横线强调。