常用Swing组件

1.常用Swing组件介绍
1.1标签
JLable组件被称为标签,它是一个静态组件,也是标准组件中最简单的一个组件。标签只起信息说明的作用,而不接收用户的输入,也无时间响应,其常用的构造方法如JLanle()。
1.2文本组件
文本组件是显示信息和提供用户输入文本信息的主要工具。
(1)文本框JTextField的应用
功能实现:实现在第一个文本框中输入一个正整数,在第二个文本框内输入n,按回车键把该数的n次方的值在第三个文本框上显示出来。

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

@SuppressWarnings("serial")
public class JTextFieldDemo extends JFrame implements ActionListener{

	JTextField tf1,tf2,tf3;
	public JTextFieldDemo(){
		// TODO Auto-generated constructor stub
		Container container=this.getContentPane();
		container.setLayout(new FlowLayout(FlowLayout.LEFT));
		JLabel lb1=new JLabel("请输入一个数:      ");
		JLabel lb2=new JLabel("请输入n:                 ");
		JLabel lb3=new JLabel("该数的n次方等于:");
		tf1=new JTextField(10);
		tf2=new JTextField(10);
		tf3=new JTextField(10);
		container.add(lb1);
		container.add(tf1);
		container.add(lb2);
		container.add(tf2);
		container.add(lb3);
		container.add(tf3);
		tf1.addActionListener(this);//----为文本框注册ActionEvent事件监听器(this只当前类,调用监听器事件的方法)
		tf2.addActionListener(this);

		this.addWindowListener(new WindowAdapter() {//为窗口注册事件监听程序,监听器以匿名类的形式进行
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		this.setTitle("文本框应用");
		this.setSize(300, 450);
		this.setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e){
		int n=Integer.parseInt(tf1.getText());
		int s=Integer.parseInt(tf2.getText());
		long x=(long) Math.pow(n, s);
		tf3.setText(String.valueOf(x));//将整形转换为字符串以修改文本框输出的内容
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new JTextFieldDemo();
	}

}

在这里插入图片描述
(2)文本域
JTextArea被称为文本域,与文本框的的主要区别是:文本框只能输入/输出一行文本,而文本与能输入/输出多行文本。一般将其放入滚动窗格JScorllPane中。
(3)密码框
JPasswordField组件实现一个密码框,用来接收用户输入的单行文本信息,在密码框中不显示用户输入的真实信息。
1.3按钮组件
(1)命令按钮
JButton是最常用、最简单的按钮,按钮可分为有无标签和有无图标几种情况。
应用:命令按钮和文本域的使用
功能实现:实现两个文本域内容的拷贝,当按下复制命令按钮时,如果对第一个文本域内容有选择,把选择的内容追加到第二个文本域后面,没有选择时把第一个文本域的所有内容追加到第二个文本域后面。当单击清除按钮时,清空第二个文本域的内容,单击reset按钮清空两个文本域里的所有内容。

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

@SuppressWarnings("serial")
public class JButtonJTextAreaDemo extends JFrame{
	private JTextArea ta1,ta2;
	private JButton bt1,bt2,bt3;
	public JButtonJTextAreaDemo() {
		// TODO Auto-generated constructor stub
		@SuppressWarnings("unused")
		Container container=this .getContentPane();
		ta1=new JTextArea(5,16);//创建文本框最多显示3行,每行15个字,超过范围以滚动条浏览
		ta1.setSelectedTextColor(Color.blue);
		ta2=new JTextArea(5,16);
		ta2.setEditable(false);
		//创建显示指定组件内容的JScrollPane,水平和垂直滚动条被显示出来
		JScrollPane scrollpane1=new JScrollPane(ta1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		JScrollPane scrollpane2=new JScrollPane(ta2,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		bt1=new JButton("复制");
		bt2=new JButton("清除");
		bt3=new JButton("重置");
		bt1.addActionListener(new ActionLis());
		bt2.addActionListener(new ActionLis());
		bt3.addActionListener(new ActionLis());
		JPanel p1=new JPanel();
		p1.add(scrollpane1);
		p1.add(bt1);
		JPanel p2=new JPanel();
		p2.add(scrollpane2);
		p2.add(bt2);
		JPanel p3=new JPanel();
		p3.add(bt3);
		container.add(p1,BorderLayout.NORTH);
		container.add(p3,BorderLayout.CENTER);
		container.add(p2,BorderLayout.SOUTH);
		
		this.addWindowListener(new WindowAdapter(){//为窗口注册窗口事件监听程序,监听器为匿名内部类的形式
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
		this.setTitle("文本内容的复制");
		this.setSize(600,450);
		this.setVisible(true);
	}
	class ActionLis implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			if(arg0.getSource()==bt1){
				if(ta1.getSelectedText()!=null)
					ta2.append(ta1.getSelectedText()+"\n");//把选中的内容复制添加到第二个文本域中
				else
					ta2.append(ta1.getText()+"\n");//把第一个文本域中的内容全部添加到第二个文本域中
			}else if(arg0.getSource()==bt2)
				ta2.setText(" "); //如果单击清除按钮,清空第二个文本域的内容
			else{
				ta1.setText(" ");//如果单击reset清空两个文本域里的所有内容
				ta2.setText(" ");
			}
				
		}
		
	}
	public static void main(String[] args) {

		new JButtonJTextAreaDemo();
	}

}

(3)JTable表格的应用:
功能实现:写一个登录窗口,点击登录后跳转到一个表格。

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

@SuppressWarnings("serial")
public class LoginWindow extends JFrame implements ActionListener{
	JLabel lab1,lab2,lab3;
	JButton bt1,bt2;
	JTextField tf1;
	JPasswordField pwf;
	JPanel pa;
	public LoginWindow() {
		// TODO Auto-generated constructor stub
		lab1=new JLabel("登录窗口");
		lab2=new JLabel("账号:");
		tf1=new JTextField(8);
		lab3=new JLabel("密码:");
		pwf=new JPasswordField(6);
		bt1=new JButton("登录");
		bt2=new JButton("退出");

		lab1.setBounds(300, 10, 200, 200);
		lab2.setBounds(140, 150, 100, 50);
		lab3.setBounds(140, 250, 100, 50);
		tf1.setBounds(180, 150, 300, 50);
		pwf.setBounds(180, 250, 300, 50);
		bt1.setBounds(180, 350, 100, 50);
		bt2.setBounds(380, 350, 100, 50);
		this.add(lab1);
		this.add(lab2);
		this.add(lab3);
		this.add(tf1);
		this.add(pwf);
		this.add(bt1);
		this.add(bt2);
		this.setTitle("欢迎来到登录窗口");
		this.setBounds(600,300,600,600);
		this.setLayout(null); 
		this.setResizable(true);
		this.setVisible(true);
		bt1.addActionListener(this);
		bt2.addActionListener(this);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==bt1)
		{
			String zh=tf1.getText();
			char[] psword=pwf.getPassword();
			String ps=new String(psword);//将字符转换为字符串
			if(zh!=null&&ps!=null)
			{
				if(zh.equals("admin")&&ps.equals("123456"))
				{
					JOptionPane.showMessageDialog(null,"登录成功");
				    new JTableDemo();
			        setVisible(false);
			        }
				else{
					JOptionPane.showMessageDialog(null,"账号或密码输入错误,请重输入");
				    tf1.setText(" ");
				    pwf.setText(null);
				}
			}else{
				JOptionPane.showMessageDialog(null,"请输入账号或密码");
			}
		}else if(e.getSource()==bt2)
		{
			dispose();
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new LoginWindow();
	}

}

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;

@SuppressWarnings("serial")
public class JTableDemo extends JFrame{
	JTable stuTable;
	public JTableDemo(){
		// TODO Auto-generated constructor stub
		Object stuinf[][]={{"20000101","张三","18","计算机"},{"20010102","李四","19","网络安全"}};
		Object head[]={"学号","姓名","年龄","专业"};
		stuTable=new JTable(stuinf,head);  //以数组形式生成表格
		stuTable.setEnabled(true);//设置表格可编辑
		stuTable.setPreferredScrollableViewportSize(new Dimension(0,120));
		JScrollPane jsp=new JScrollPane();
		jsp.setViewportView(stuTable);
		jsp.setBorder(BorderFactory.createTitledBorder("学生信息"));
		add(BorderLayout.CENTER,jsp);//添加到内容格窗上
		validate();//刷新窗口
		this.setTitle("JTable表格演示程序");
		this.setSize(600,450);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个简单的ATM柜员机模拟程序的Java代码: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ATM extends JFrame implements ActionListener { private JTextField tfDeposit; private JTextField tfWithdraw; private JLabel lblBalance; private JPasswordField pfOld; private JPasswordField pfNew; private JPasswordField pfConfirm; private double balance; private String password; public ATM() { super("ATM"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 300); JLabel lblTitle = new JLabel("ATM"); lblTitle.setFont(new Font("Arial", Font.BOLD, 24)); add(lblTitle, BorderLayout.NORTH); JPanel panel = new JPanel(new GridLayout(5, 2)); panel.add(new JLabel("Deposit:")); tfDeposit = new JTextField(); panel.add(tfDeposit); panel.add(new JLabel("Withdraw:")); tfWithdraw = new JTextField(); panel.add(tfWithdraw); panel.add(new JLabel("Balance:")); lblBalance = new JLabel("0.00"); panel.add(lblBalance); JButton btnDeposit = new JButton("Deposit"); btnDeposit.addActionListener(this); panel.add(btnDeposit); JButton btnWithdraw = new JButton("Withdraw"); btnWithdraw.addActionListener(this); panel.add(btnWithdraw); add(panel, BorderLayout.CENTER); JPanel panel2 = new JPanel(new GridLayout(4, 2)); panel2.add(new JLabel("Old password:")); pfOld = new JPasswordField(); panel2.add(pfOld); panel2.add(new JLabel("New password:")); pfNew = new JPasswordField(); panel2.add(pfNew); panel2.add(new JLabel("Confirm password:")); pfConfirm = new JPasswordField(); panel2.add(pfConfirm); JButton btnChangePassword = new JButton("Change password"); btnChangePassword.addActionListener(this); panel2.add(btnChangePassword); add(panel2, BorderLayout.SOUTH); balance = 1000.00; password = "1234"; } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Deposit")) { double amount = Double.parseDouble(tfDeposit.getText()); balance += amount; lblBalance.setText(String.format("%.2f", balance)); tfDeposit.setText(""); } else if (e.getActionCommand().equals("Withdraw")) { double amount = Double.parseDouble(tfWithdraw.getText()); if (amount > balance) { JOptionPane.showMessageDialog(this, "Insufficient funds."); } else { balance -= amount; lblBalance.setText(String.format("%.2f", balance)); } tfWithdraw.setText(""); } else if (e.getActionCommand().equals("Change password")) { String oldPassword = new String(pfOld.getPassword()); String newPassword = new String(pfNew.getPassword()); String confirmPassword = new String(pfConfirm.getPassword()); if (!oldPassword.equals(password)) { JOptionPane.showMessageDialog(this, "Incorrect old password."); } else if (!newPassword.equals(confirmPassword)) { JOptionPane.showMessageDialog(this, "Passwords do not match."); } else { password = newPassword; JOptionPane.showMessageDialog(this, "Password changed."); pfOld.setText(""); pfNew.setText(""); pfConfirm.setText(""); } } } public static void main(String[] args) { ATM atm = new ATM(); atm.setVisible(true); } } ``` 这个程序使用了Swing组件来创建图形用户界面。它有两个面板,一个面板用于处理存款、取款和余额查询,另一个面板用于处理密码修改。当用户输入存款或取款金额时,程序会更新余额并将其显示在标签上。当用户点击“Change password”按钮时,程序会先检查旧密码是否正确,然后检查新密码是否与确认密码匹配,最后更新密码并显示一条消息框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值