注:本文包含两个练习,为作者学习过程中做的小练习,仅供学习参考
1、利用CardLayout布局管理器完成界面设计,添加三个命令按钮Jbutton,初始显示“第一张卡片”,当单击按钮时显示下一卡片,如图所示:
该练习涉及知识点:
swing组件与awt组件的使用,JFrame容器与JPanel容器的使用,基本布局管理器的使用(CardLayout布局管理器),基本组件的使用(JButton组件),事件监听(actionPerformed事件),CardLayout布局中next()方法的使用,以及对组件的封装操作
本题涉及到的组件及容器:JFrame容器、Panel容器、Container容器、JButton组件
源代码:
package FourthPractice;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PracticeOne extends JFrame implements ActionListener{
//定义外部容器
Panel cardPanel = new Panel();
//定义卡片布局对象
CardLayout card = new CardLayout();
//定义构造函数
public PracticeOne() {
super("卡片切换");
setSize(300,200);
setLocation(500,250);
setVisible(true);
//设置cardPanel面板对象为卡片布局
cardPanel.setLayout(card);
//创建三个JButton组件,并添加到cardPanel面板对象中
JButton btn1 = new JButton("第一张卡片");
JButton btn2 = new JButton("第二张卡片");
JButton btn3 = new JButton("第三张卡片");
cardPanel.add(btn1);
cardPanel.add(btn2);
cardPanel.add(btn3);
//为按钮对象注册监听器
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
//定义容器对象为当前窗体容器对象
Container container = getContentPane();
//将cardPanel面板放置在窗口边界布局的中间,窗口默认为边界布局
container.add(cardPanel,BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e) {
card.next(cardPanel);
}
//主方法
public static void main(String[] args) {
PracticeOne po = new PracticeOne();
}
}
2、使用getAvailableFontFamilyNames()方法获得系统字体,添加到JComboBox中,可以选择某种字体,在画布中显示文本“Java入门与精通”,如图所示:
该练习涉及知识点:
swing组件与awt组件的使用,JFrame容器的使用,基本布局管理器的使用(BorderLayout布局管理器),基本组件的使用(JLabel组件和JComboBox组件),添加事件监听(addActionListener),BorderLayout布局中方位常量的使用(BorderLayout.PAGE_START/BorderLayout.CENTER),JComboBox中获取当前选中的元素的方法(getSelectedItem()),设置字体格式的方法(Font()) ,获取系统字体名称的方法(getAvailableFontFamilyNames())
源代码:
package FourthPractice;
import java.awt.*;
import javax.swing.*;
public class fontswitch{
JFrame jf;
BorderLayout bl;
JLabel jl;
//创建构造函数
public fontswitch() {
jf = new JFrame();
bl = new BorderLayout();
jl = new JLabel("Java入门与精通",JLabel.CENTER);//设置标签内容及居中
//设置标签的默认字体,Font(<字体名称>,<字体样式(1:加粗,0:标准)><字体大小>)
jl.setFont(new Font("仿宋",0,35));
jf.setLayout(bl);
jf.setSize(300,200);
jf.setVisible(true);
//获取系统字体,并放入fontNames数组中
GraphicsEnvironment fn = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontNames = fn.getAvailableFontFamilyNames();
//创建下拉列表框并将fontNames数组作为参数传入
JComboBox<String> jb = new JComboBox<String>(fontNames);
//设置默认字体
jb.setSelectedItem("仿宋");
//将标签组件和下拉列表框组件添加进borderLayout布局中
jf.add(jb, BorderLayout.PAGE_START);
jf.add(jl, BorderLayout.CENTER);
//给jb添加事件监听
jb.addActionListener(e -> {
String item = (String)jb.getSelectedItem();//获取选中的字体,并强制转换为String型
jl.setFont(new Font(item,0,35));//设置标签字体格式
});
}
public static void main(String[] args) {
fontswitch f = new fontswitch();
}
}
希望本文对你有所帮助,加油!