GMFTBY 2016-07-11 14:35 采纳率: 30%
浏览 864
已结题

关于java swing的一点问题

package 最短路径;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class floyed extends JFrame {
public int map[][];
public int numberofpoint;
public int numberofedge;
public int minnum;

public floyed()
{
    this.setSize(300, 400);
    this.setVisible(true);
    this.setTitle("Floyed algorithm");
    Container c=this.getContentPane();
    this.setLayout(new FlowLayout(1,5,5));
    JTextField tb=new JTextField("B",20);
    JTextField tf=new JTextField("F",20);
    JTextField t0=new JTextField("numberofpoint",20);
    JTextField t00=new JTextField("numberedge",20);
    JTextField t1=new JTextField("begin",20);
    JTextField t2=new JTextField("final",20);
    JTextField t3=new JTextField("length",20);
    JTextField t4=new JTextField("最短路径长度",20);
    JButton k1=new JButton("collect");
    JButton k2=new JButton("count");
    JButton k3=new JButton("init");
    c.add(tb);c.add(tf);
    c.add(t0);c.add(t00);
    c.add(t1);c.add(t2);c.add(t3);
    c.add(t4);
    c.add(k1);c.add(k2);c.add(k3);
    k3.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            init();
            tb.setText("B");
            tf.setText("F");
            t0.setText("numberofpoint");
            t00.setText("numberofedge");
            t1.setText("begin");
            t2.setText("final");
            t3.setText("length");
            t4.setText("最短路径");
        }
    });
    tb.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            // TODO 自动生成的方法存根
            if(tb.getText().equals("")==true) tb.setText("B");
        }

        @Override
        public void focusGained(FocusEvent e) {
            // TODO 自动生成的方法存根
            tb.setText("");
        }
    });
    tf.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            // TODO 自动生成的方法存根
            if(tf.getText().equals("")==true) tf.setText("F");
        }

        @Override
        public void focusGained(FocusEvent e) {
            // TODO 自动生成的方法存根
            tf.setText("");
        }
    });
    t0.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            // TODO 自动生成的方法存根
            if(t0.getText().equals("")==true) t0.setText("numberofpoint");
        }

        @Override
        public void focusGained(FocusEvent e) {
            // TODO 自动生成的方法存根
            t0.setText("");
        }
    });
    t00.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            // TODO 自动生成的方法存根
            if(t00.getText().equals("")==true) t00.setText("numberofedge");
        }

        @Override
        public void focusGained(FocusEvent e) {
            // TODO 自动生成的方法存根
            t00.setText("");
        }
    });
    t1.addFocusListener(new FocusListener() {

        public void focusLost(FocusEvent e) {
            if(t1.getText().equals("")==true) t1.setText("begin");
        }
        public void focusGained(FocusEvent e) {
            t1.setText("");
        }
    });
    t2.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            // TODO 自动生成的方法存根
            if(t2.getText().equals("")==true) t2.setText("final");
        }

        @Override
        public void focusGained(FocusEvent e) {
            // TODO 自动生成的方法存根
            t2.setText("");
        }
    });
    t3.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            // TODO 自动生成的方法存根
            if(t3.getText().equals("")==true) t3.setText("length");
        }

        @Override
        public void focusGained(FocusEvent e) {
            // TODO 自动生成的方法存根
            t3.setText("");
        }
    });
    t4.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            // TODO 自动生成的方法存根
            t4.setText("最短路径长度");
        }

        @Override
        public void focusGained(FocusEvent e) {
            // TODO 自动生成的方法存根
            t4.setText("");
        }
    });
    k1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            int a,b,c;
            numberofpoint=Integer.parseInt(t0.getText());
            numberofedge=Integer.parseInt(t00.getText());
            a=Integer.parseInt(t1.getText());
            b=Integer.parseInt(t2.getText());
            c=Integer.parseInt(t3.getText());
            map[a][b]=c;
        }
    });
    k2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            int kb=Integer.parseInt(tb.getText());
            int kf=Integer.parseInt(tf.getText());
            for(int i=1;i<=numberofpoint;i++)
            {
                for(int j=1;j<=numberofpoint;j++)
                {
                    for(int k=1;k<=numberofpoint;k++)
                    {
                        if(map[j][k]>map[j][i]+map[i][k])
                        {
                            map[j][k]=map[j][i]+map[i][k];
                        }
                    }
                }
            }
            minnum=map[kb][kf];
            t4.setText(""+minnum);
        }
    });
    init();
}

public void init()
{
    map=new int[10000][10000];
    for(int i=1;i<=10000;i++)
    {
        for(int j=1;j<=10000;j++)
        {
            map[i][j]=9999999;
            if(i==j) map[i][j]=0;
        }
    }
    numberofpoint=numberofedge=0;
    minnum=9999999;
}

}

出现的问题是,我想通过collect按钮不断收集参数,最终通过count进行最短路径的计算,但是最后的结果是,始终是返回0,或者返回错的值,看不出问题在哪里,求教

  • 写回答

4条回答 默认 最新

  • yu954663801 2016-07-12 00:55
    关注

    你的控件声明在构造方法里面,在ActionListener里面使用,你的编译器不报错?
    你应该声明在类里面,不然获取不到值的。

    评论

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿