与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(); } }