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

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用的真心不多(有的用只是很少)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘