swing入门篇 4.简单控件

标签 JLabel

package my;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyFrame extends JFrame{

	public MyFrame(String title)
	{
		super(title);
		
		// 内容面板 (ContentPane)
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
		
		// new JLabel() :可以理解为生了一个小孩
		// JLable ss = new JLabel() : 可以理解为生了一个小孩, 并起名为ss
		//此行代码也可以写在MyFrame方法外面
		JLabel label = new JLabel();
		
		contentPane.add(label);
	
		label.setText("你好");
		label.setFont(new Font("微软雅黑", 0, 14));
		label.setForeground(new Color(0, 255, 0));
		label.setToolTipText("http://baidu.com");
		
	}
}

文本框JTextField

package my;

import java.awt.Container;
import java.awt.FlowLayout;
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.JOptionPane;
import javax.swing.JTextField;

public class MyFrame extends JFrame{
	//此行代码也可以写在MyFrame方法里面
	JLabel label = new JLabel("姓名");
	// 注意:构造参数,16表示16列,用于计算宽度显示,并不是字符个数限制
	JTextField textField = new JTextField(16);
	JButton button = new JButton("确定");
	
	public MyFrame(String title){
		super(title);
		
		// 内容面板 (ContentPane)
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
				
		// 添加控件
		contentPane.add(label);
		contentPane.add(textField);
		contentPane.add(button);
		
		// 按钮点击处理
		button.addActionListener( new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e)
			{
				onButtonOk();
			}
		});
		
	}
	
	// 事件处理
	private void onButtonOk()
	{
		String str = textField.getText();
		// 消息提示框 ( 注意 showMessageDialog() 是静态方法 )
		JOptionPane.showMessageDialog(this, "输入了: " + str);
	}
}

复选框JCheckBox

package my;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class MyFrame extends JFrame
{
	JCheckBox cbx = new JCheckBox("我想订阅邮件通知");
	JTextField email = new JTextField(16);
	
	public MyFrame(String title)
	{
		super(title);
		
		// 内容面板 (ContentPane)
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
				
		// 添加控件		
		contentPane.add(cbx);
		contentPane.add(email);
		
		cbx.setSelected(true); // 默认选中
		email.setToolTipText("输入邮箱地址");
		
		cbx.addActionListener( new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e)
			{
				// 如果未选中,则禁用文本框
				if(cbx.isSelected())
					email.setEnabled(true);
				else
					email.setEnabled(false);
				
				// 注: cbx, email都是外部类里属性,完整写法是 MyFrame.this.cbx
				// 注:可以简写为 email.setEnabled(cbx.isSelected())
			}
		});
	}
}

下拉列表JComboBox

package my;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyFrame extends JFrame{
	// JComboBox就一个泛型 , 参数类型是数据项的类型
	JComboBox<String> colorList = new JComboBox<>();
	JLabel sampleText = new JLabel("文本样例  This is a sample");
	
	public MyFrame(String title)
	{
		super(title);
		
		// 内容面板 (ContentPane)
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
				
		// 添加控件		
		contentPane.add(colorList);
		contentPane.add(sampleText);
		
		
		colorList.addItem("红色");
		colorList.addItem("蓝色");
		colorList.addItem("绿色");
		updateTextColor();
		
		// 下拉列表的事件处理
		colorList.addActionListener( new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e)
			{
				updateTextColor();
			}		
		});
	}

	// 更新 JLabel 的颜色的显示
	private void updateTextColor(){
		// 获取选中项的值
		String item = (String)colorList.getSelectedItem();
		
		// 根据选中的颜色,设置JLabel文字颜色
		Color color = null;
		if( item.equals( "红色"))
			color = Color.RED;
		else if(item.equals("蓝色"))
			color = Color.BLUE;
		else if(item.equals("绿色"))
			color = Color.GREEN;	
		
		sampleText.setForeground(color);
	}	
}

彩色标签

package my;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyFrame extends JFrame{
	// JComboBox 是一个泛型的定义, 用于指定 Item 的数据类型
	JComboBox<ListOption> colorList = new JComboBox<>();
	JLabel sampleText = new JLabel("文本样例  This is a sample");
	
	public MyFrame(String title)
	{
		super(title);
		
		// 内容面板 (ContentPane)
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
				
		// 添加控件		
		contentPane.add(colorList);
		contentPane.add(sampleText);
		
		colorList.addItem( new ListOption("红色", Color.RED));
		colorList.addItem( new ListOption("绿色", Color.GREEN));
		colorList.addItem( new ListOption("蓝色", Color.BLUE));
		updateTextColor();
		
		// 下拉列表的事件处理
		colorList.addActionListener( new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e)
			{
				updateTextColor();
			}		
		});
	}

	// 更新 JLabel 的颜色的显示
	private void updateTextColor(){
		// 获取选中项的值,此时,这个选中项的类型 ListOption
		ListOption item = (ListOption)colorList.getSelectedItem();		
		sampleText.setForeground(item.color);
	}
	
	// 专门定义一个定部类,表示列表项
	private static class ListOption
	{
		public String text;
		public Color color;
		public ListOption(String text, Color color)
		{
			this.text = text;
			this.color = color;
		}
		
		// 重写 toString(),用于列表项的显示
		@Override
		public String toString()
		{
			return "[" + this.text + "]" ;
		}		
	}
}

彩色标签

package my;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class MyFrame extends JFrame
{

	public MyFrame(String title)
	{
		super(title);
		
		// 内容面板 (ContentPane)
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
		
		JLabel a1 = new JLabel("1");
		// 设置背景为不透明 (默认透明 )
		a1.setOpaque(true);
		// 设置背景色
		a1.setBackground(Color.YELLOW);
		// 设置最佳尺寸
		a1.setPreferredSize(new Dimension(60,30));
		// 设置水平对齐
		a1.setHorizontalAlignment(SwingConstants.CENTER);
		
		JLabel a2 = new JLabel("2");
		a2.setOpaque(true);
		a2.setBackground(Color.GREEN);
		a2.setPreferredSize(new Dimension(60,30));
		a2.setHorizontalAlignment(SwingConstants.CENTER);
		
		JLabel a3 = new JLabel("3");
		a3.setOpaque(true);
		a3.setBackground(Color.LIGHT_GRAY);
		a3.setPreferredSize(new Dimension(60,30));
		a3.setHorizontalAlignment(SwingConstants.CENTER);

		JLabel a4 = new JLabel("4");
		a4.setOpaque(true);
		a4.setBackground(Color.CYAN);
		a4.setPreferredSize(new Dimension(60,30));
		a4.setHorizontalAlignment(SwingConstants.CENTER);
		
		contentPane.add(a1);
		contentPane.add(a2);
		contentPane.add(a3);
		contentPane.add(a4);
	}
}

彩色标签(简化版)

package my;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class MyFrame extends JFrame
{

	public MyFrame(String title)
	{
		super(title);
		
		// 内容面板 (ContentPane)
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
		
		JLabel a1 = new ColorfulLabel("1", Color.YELLOW);
		
		JLabel a2 = new ColorfulLabel("2", Color.GREEN);
		
		JLabel a3 = new ColorfulLabel("3", Color.LIGHT_GRAY);
		
		JLabel a4 = new ColorfulLabel("4", Color.CYAN);
		
		
		contentPane.add(a1);
		contentPane.add(a2);
		contentPane.add(a3);
		contentPane.add(a4);
	}
	
	private static class ColorfulLabel extends JLabel
	{
		public ColorfulLabel(String text, Color bgColor)
		{
			super(text);
			
			setOpaque(true);
			setBackground(bgColor);
			setPreferredSize(new Dimension(60,30));
			setHorizontalAlignment(SwingConstants.CENTER);
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值