初学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");
}
}
}
你的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用的真心不多(有的用只是很少)
这说明你的str并不等于"" 其实你真正需要的条件是 if("".equals(str) || str == null)
我不会这个,但我试了一下你的代码,然后用上面的兄台的修改方法试了一下,发现问题
你的if判断比的是字符串,不知道实际接收的是什么,但你在界面输入的信息应该始终都是空值,因为我用楼上兄台的方法equals比对地址总是显示没告诉名字
你朝着这个思路找一下,看看你在可视页面输入的名字接收到了么?
回头发一份改好的我玩玩,而且退出不好使要改哦
JTextField field;//成员变量
str = field.getText();
if (str == null || str.trim().equals(""))
text.append("你还没告诉我你的名字。\n");
else
text.append("你好" + str + "! \n");
//--------------------------------------------------------------------