Mezzsy
2017-08-15 08:20
采纳率: 100%
浏览 1.0k
已采纳

Java 简单程序遇到了问题

初学Swing遇到了麻烦。我想设计一个程序,输入你的名字就打出“你好+名字”,否则就打出“你还没告诉我你的名字。”,但是现在一直是“你好”,怎么办?

这是我的代码:
package MySwing;

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Myswing {
JTextArea text;
String str;

public static void main(String[] args) {
Myswing gui=new Myswing();
gui.go();
}
public void go() {
JFrame frame=new JFrame("zzsy");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(800, 300);

JPanel panel=new JPanel();
JButton button1=new JButton("确定");
JButton button2=new JButton("退出");

JLabel label=new JLabel("输入你的名字:");
label.setFont(new Font("宋体",Font.BOLD,16));//设置字体

JTextField field=new JTextField(30);
field.setText("");
str=field.getText();

text=new JTextArea();
text.setLineWrap(true);
JScrollPane scroll=new JScrollPane(text);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

button1.addActionListener(new b1());

panel.setLayout(null);
button1.setBounds(50, 300, 100, 50);
button2.setBounds(200, 300, 100, 50);
label.setBounds(0, 0, 200, 40);
field.setBounds(150, 0, 100, 40);
text.setBounds(40,50,300,200);

panel.add(button1);
panel.add(button2);
panel.add(label);
panel.add(field);
panel.add(text);
panel.add(scroll);

frame.add(panel);
frame.setSize(400, 400);
frame.setVisible(true);
}
class b1 implements ActionListener{
public void actionPerformed(ActionEvent e1) {
if(str=="")
text.append("你还没告诉我你的名字。\n");
else
text.append("你好"+str+"! \n");
}
}
}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 鼠小 2017-08-15 08:39
    已采纳

    你的str在输入信息之前就已经却定了,也就是你输入的信息没有传入str,,需要在调用点击事件时获取,,str = field.getText();

     import java.awt.event.*;
    import java.awt.*;
    import javax.swing.*;
    
    public class Myswing {
        JTextArea text;
        String str;
    
        public static void main(String[] args) {
            Myswing gui = new Myswing();
            gui.go();
        }
    
        public void go() {
            JFrame frame = new JFrame("zzsy");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocation(800, 300);
            JPanel panel = new JPanel();
            JButton button1 = new JButton("确定");
            JButton button2 = new JButton("退出");
            JLabel label = new JLabel("输入你的名字:");
            label.setFont(new Font("宋体", Font.BOLD, 16));//设置字体
            JTextField field = new JTextField(30);
            field.setText("");
            str = field.getText();
            text = new JTextArea();
            text.setLineWrap(true);
            JScrollPane scroll = new JScrollPane(text);
            scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
            scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            button1.addActionListener(new b1(field));
            panel.setLayout(null);
            button1.setBounds(50, 300, 100, 50);
            button2.setBounds(200, 300, 100, 50);
            label.setBounds(0, 0, 200, 40);
            field.setBounds(150, 0, 100, 40);
            text.setBounds(40, 50, 300, 200);
            panel.add(button1);
            panel.add(button2);
            panel.add(label);
            panel.add(field);
            panel.add(text);
            panel.add(scroll);
            frame.add(panel);
            frame.setSize(400, 400);
            frame.setVisible(true);
        }
    
        class b1 implements ActionListener {
            private JTextField field;
            public b1(JTextField field){
                this.field = field;
            }
            public void actionPerformed(ActionEvent e1) {
                str = field.getText();
                if (str == "")
                    text.append("你还没告诉我你的名字。\n");
                else
                    text.append("你好" + str + "! \n");
            }
        }
    }
    
    

    我已经按照你的需求修改好了,,你试试,,有问题还可以追问。

    最后有个建议,java SWing算是比较冷门的东西,目前java比较火的两个方向,,web和android,,
    swing不行了,安卓也不如以前了,,
    建议学习web方向,swing用的真心不多(有的用只是很少)

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Tsui丶 2017-08-15 08:28

    这说明你的str并不等于"" 其实你真正需要的条件是 if("".equals(str) || str == null)

    评论
    解决 无用
    打赏 举报
  • 我本狂儒 2017-08-15 08:35

    我不会这个,但我试了一下你的代码,然后用上面的兄台的修改方法试了一下,发现问题
    你的if判断比的是字符串,不知道实际接收的是什么,但你在界面输入的信息应该始终都是空值,因为我用楼上兄台的方法equals比对地址总是显示没告诉名字
    你朝着这个思路找一下,看看你在可视页面输入的名字接收到了么?
    回头发一份改好的我玩玩,而且退出不好使要改哦

    评论
    解决 无用
    打赏 举报
  • 战天夺命 2017-08-15 08:42
      JTextField field;//成员变量   
      str = field.getText();
            if (str == null || str.trim().equals(""))
                text.append("你还没告诉我你的名字。\n");
            else
                text.append("你好" + str + "! \n");
    

    //--------------------------------------------------------------------

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题