与JFrame交互-按钮、监听器和文本字段
本教程介绍如何使用按钮、侦听器和文本字段与JFrame进行交互。
背景
交互性是用户在每个应用程序中想要的。为了在程序中增加交互性,Java为我们提供了一种非常简单的方法。Javax.swing.JButtoncalss为我们提供了一种添加按钮的方法,并且在单击按钮后发生事件。同样在javax.swing.JTextfield允许我们向JFrame添加文本字段。
添加文本字段
可以使用JTextfield()方法创建textfield。这个类有许多构造函数,比如JTextField():它构造一个新的文本字段
JTextField(字符串文本):用指定的文本构造文本字段。
JTextField(stringtext,int column):它用指定的文本和列数创建一个新的文本字段。
下面的程序展示了向JFrame添加文本字段的示例。
package theitroad.local;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Example {
static JTextField textfield1, textfield2, textfield3;
public static void main(String[] args) {
JFrame f = new JFrame("Text Field Examples");
f.getContentPane().setLayout(new FlowLayout());
textfield1 = new JTextField("Text field 1",10);
textfield2 = new JTextField("Text field 2",10);
textfield3 = new JTextField("Text field 3",10);
f.getContentPane().add(textfield1);
f.getContentPane().add(textfield2);
f.getContentPane().add(textfield3);
f.pack();
f.setVisible(true);
}
}
这是这个代码的输出
TextField示例
我们可以使用JTextfield提供的不同方法进行自定义。
JTextField.setfont(f字体);设置文本的字体
JTextField.setHorizontalAlignment(int alignment);它设置文本的水平对齐方式。
JTextFieldsetScrollOffset(int scrolloffset);它以像素为单位设置滚动偏移。
添加按钮,应用动作监听
类似地,我们可以向JFrame添加按钮。JButton为我们提供了一种添加按钮和动作监听器的简单方法。它有很多构造函数
JButton();创建一个没有文本和图标的按钮。
JButton(字符串文本):创建具有指定文本的按钮。
JButton(图标图标);创建具有指定图标的按钮。
JButton(字符串文本,图标图标);创建具有指定文本和图标的按钮。
下面是一个带有图像图标的JButton的简单示例。
package theitroad.local;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SimpleJButton {
SimpleJButton(){
JFrame f=new JFrame("Button Example");
JButton b=new JButton("Play", new ImageIcon("play.png"));
b.setBounds(100,100,140, 40);
f.add(b);
f.setSize(300,400);
f.setLayout(null);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SimpleJButton();
}
}
这是这个代码的输出
带图标的按钮
添加动作监听器
在JButton上添加动作侦听器非常简单。JButton类提供了一个方法JButton.addActionListener(),它实现重写方法actionPerformed()。在下面的示例中,我编写了一个简单的程序,告诉用户输入名称,当用户单击提交按钮时,会显示一条消息“name has been submitted.”。这是密码。
package theitroad.local;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class SimpleJButton {
SimpleJButton(){
JFrame f=new JFrame("Button Example");
//submit button
JButton b=new JButton("Submit");
b.setBounds(100,100,140, 40);
//enter name label
JLabel label = new JLabel();
label.setText("Enter Name :");
label.setBounds(10, 10, 100, 100);
//empty label which will show event after button clicked
JLabel label1 = new JLabel();
label1.setBounds(10, 110, 200, 100);
//textfield to enter name
JTextField textfield= new JTextField();
textfield.setBounds(110, 50, 130, 30);
//add to frame
f.add(label1);
f.add(textfield);
f.add(label);
f.add(b);
f.setSize(300,300);
f.setLayout(null);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//action listener
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
label1.setText("Name has been submitted.");
}
});
}
public static void main(String[] args) {
new SimpleJButton();
}
}

