| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1989 人关注过本帖
标题:[求助]JButton的actionPerformed问题
只看楼主 加入收藏
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
 问题点数:0 回复次数:9 
[求助]JButton的actionPerformed问题
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class frame extends JFrame implements ActionListener{
 JTextField t1,t2;
 JButton b;
 Container c;
 frame(){
  super("综合测试");
  setVisible(true);
  setLocationRelativeTo(null);
  setSize(500,300);
  c=getContentPane();
  c.setLayout(new FlowLayout());
  JTextField t1=new JTextField(10);
  JTextField t2=new JTextField(10);
  c.add(t1);c.add(t2);
  JButton b=new JButton("ok");
  b.addActionListener(this);
  c.add(b);
  this.validate();
 }
 public void actionPerformed(ActionEvent e){
   String word=t1.getText();
   /*代码*/
  
}
public class Ttt{
 public static void main(String arg[]){
  new frame();
 }            
}
程序的一部分,编译可以通过但运行时候点按钮会在命令提示符下报错.
请解惑,谢谢~
搜索更多相关主题的帖子: JButton 
2005-10-15 18:05
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
[CODE]import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class frame extends JFrame implements ActionListener
{
  JTextField t1 = new JTextField(10);
  JTextField t2 = new JTextField(10);
  JButton b = new JButton("ok");
  frame()
  {
    super("综合测试");   
    b.addActionListener(this);
    JPanel workJP = new JPanel();
    workJP.add(t1);
    workJP.add(t2);
    workJP.add(b);
    JPanel wholeJP = new JPanel(new BorderLayout());
    wholeJP.add(workJP, BorderLayout.NORTH);
    setContentPane(wholeJP);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,300);
    setLocationRelativeTo(null);
    setVisible(true);
  }
  public void actionPerformed(ActionEvent e)
  {
    Object o = e.getSource();
    if(o == b)
    {
      // your code for example:
      System.out.println("button was pressed");
    }
  }
  public static void main(String arg[])
  {
    new frame();
  }              
}[/CODE]

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-10-15 20:03
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
嘿嘿KAI大哥又来帮我了,我有几个问题:
1.setContentPane(wholeJP);这句话(包括前面的JPanel)的效果是否c=getContentPane();一样就是添加?
2.去掉一些细微差别,是否我的程序主要问题就是没有Object o = e.getSource();if(o == b).....这部分造成的?
3.为什么会有这样的情况呢?awt中应该不会这样吧?swing 中一定要这样么?扩展一下.
谢谢,嘿嘿,我现在渴求啊.

2005-10-15 22:12
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
再次求救~~~~~ 我把kai斑竹的那Object几句话加进去了,原来的解决了,但按钮任何作用也没有了 干脆把全贴上吧,这个是还没完成的: import java.awt.*; import javax.swing.*; import java.awt.event.*; class frame extends JFrame implements ActionListener{ JTextField t1,t2; JButton b; Container c; boolean or; frame(){ super("综合测试"); setVisible(true); setLocationRelativeTo(null); setSize(500,300); c=getContentPane(); c.setLayout(new FlowLayout()); JTextField t1=new JTextField(10); JTextField t2=new JTextField(10); c.add(t1);c.add(t2); JButton b=new JButton("ok"); b.addActionListener(this); c.add(b); this.validate(); } public void actionPerformed(ActionEvent e){ Object o = e.getSource(); if(o == b){ String word=t1.getText(); char a[]=word.toCharArray(); for(int i=0;i<a.length;i++){ if(!(Character.isDigit(a[i]))){ t2.setText("error"); break; } } if (word.equals("111")){ t2.setText("boy"); } else if(word.equals("222")){ t2.setText("girl"); } else t2.setText("无此钥匙"); } } } public class Ttt{ public static void main(String arg[]){ new frame(); } } 我强烈怀疑是由于对JTextField的操作引起的,虽然我学的时间不长,但在swt中也没遇到类似情况... 99我啊.

2005-10-15 23:21
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
kai斑竹请看这个: 问题基本解决了 如果把代码在您的上做修改就能达到目的,但c=getContentPane();再c.add( )就不行,问题一个接一个的. 为什么这两种方法差这么多呢?郁闷,不明白?.....请指教

[此贴子已经被作者于2005-10-16 0:09:06编辑过]


2005-10-16 00:00
lcm
Rank: 4
等 级:贵宾
威 望:13
帖 子:140
专家分:0
注 册:2005-2-4
收藏
得分:0 
getContentPane()是获取当前面板容器,JPanel workJP = new JPanel()是创建新的面板容器

从 小 事 做 起,脚 踏 实 地 ~
2005-10-16 01:21
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
你的程序之所以不能运行,是因为 程序中有些代码的先后次序颠倒了。
现将你的代码修改如下:
[CODE]
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class frame extends JFrame implements ActionListener
{
  JTextField t1=new JTextField(10);
  JTextField t2=new JTextField(10);
  JButton b=new JButton("ok");
  
  boolean or;
  frame()
  {
    super("综合测试");
    b.addActionListener(this);

    Container c = getContentPane();
    c.setLayout(new FlowLayout());
    c.add(t1);
    c.add(t2);   
    c.add(b);
   
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,300);
    setVisible(true);
  }
  public void actionPerformed(ActionEvent e)
  {
    Object o = e.getSource();
    String word= t1.getText();
    if(o == b)
    {
      System.out.println(word);
      
      if (word.equals("111"))
        t2.setText("boy");
      else if(word.equals("222"))
        t2.setText("girl");
      else
        t2.setText("无此钥匙");
      char a[]=word.toCharArray();
      for(int i=0;i&lt;a.length;i++)
      {
        if(!(Character.isDigit(a[i])))
        {
          t2.setText("error");
          break;
        }
      }
    }
  }
}

public class Ttt
{
  public static void main(String arg[])
  {
    new frame();
  }            
}[/CODE]

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-10-16 02:22
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
原来如此,顺序都这么重要!!!这问题真鬼,我还几次以为我会了其实还是不懂
能不能再多问点东西?
昨天夜里我用您的代码试了好几种顺序组合,都呢能通过啊...
请问书写顺序有什么禁止和一定要作到的规范么?

2005-10-16 12:05
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
一般先完成一些组件的设置, 如JTextField, JButton 等等,然后放入 JPanel,在放入JPanel 之前需要将JPanel设置Layout, JPanel可以套装, 然后将那个整体的JPanel Object 放入 frame  的Container中, 最后对frame 做一些设置,比如 size, location,那个关闭函数千万别忘了,我发现很多人没有写关闭函数,这样窗体就关不掉了。最后当然是那个 setVisible(true);

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-10-16 13:20
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
哦,太好了,以后就这么写。
嘿嘿,谢谢~~~
这种生活真好。

2005-10-16 13:30
快速回复:[求助]JButton的actionPerformed问题
数据加载中...
 
   



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

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