文章目录
- 题目一
- 题目二
- 题目三
题目一
(一)编程实现:在JFrame中加入2个按钮(JButton)和1个标签(JLabel),按钮上显示的名字分别为“按钮1”和“按钮2”。单击每个按钮,JLabel上都能显示其名字。
源码:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Test01 {
public Test01() {
JFrame f = new JFrame("实验一");
f.setLayout(new FlowLayout());
JButton btn1 = new JButton("Button1 ");
JButton btn2 = new JButton("Button2");
JLabel label = new JLabel("按钮2");
addAction(btn1, label);
addAction(btn2, label);
f.add(btn1);
f.add(btn2);
f.add(label);
defaultSwing(f);
}
private void addAction(JButton btn, JLabel label) {
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
label.setText(s);
}
});
}
private void defaultSwing(JFrame f) {
f.setSize(500, 200);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static void main(String[] args) {
new Test01();
}
}
运行截图:
题目二
(二)编程实现:在JFrame中加入下列菜单:文件、编辑。
要求:
(1)“文件”中包含:新建、打开和退出。“新建”中包含:JAVA文档、HTML文档。
(2)“编辑”中包含:粘贴、查找、全选。
(3)点击菜单项“退出”,可退出程序。
(4)“打开”和“退出”之间有分割线。
(5)为“打开”添加快捷键Ctrl+O。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import static java.awt.event.InputEvent.CTRL_DOWN_MASK;
public class Test02 {
public static void main(String args[]) {
JFrame f = new JFrame("实验二");
//创建并添加菜单栏
JMenuBar menuBar = new JMenuBar();
f.setJMenuBar(menuBar);
JMenu menuFile = new JMenu("文件(F)"), menuEdit = new JMenu("编辑(E)");
menuBar.add(menuFile);
menuBar.add(menuEdit);
//添加“文件”菜单的各菜单项
JMenu itemCreate = new JMenu("新建");
JMenuItem itemOpen = new JMenuItem("打开");
JMenuItem itemExit = new JMenuItem("退出");
JMenuItem itemCreate1 = new JMenuItem("JAVA文档");
JMenuItem itemCreate2 = new JMenuItem("HTML文档");
itemCreate.add(itemCreate1);
itemCreate.add(itemCreate2);
itemOpen.setAccelerator(KeyStroke.getKeyStroke('O', CTRL_DOWN_MASK));
//添加文件里的按钮
menuFile.add(itemCreate);
menuFile.add(itemOpen);
menuFile.addSeparator();
menuFile.add(itemExit);
//添加“编辑”菜单的各菜单项
JMenuItem itemcopy = new JMenuItem("粘贴");
JMenuItem itemsearch = new JMenuItem("查找");
JMenuItem itemadd = new JMenuItem("全选");
menuEdit.add(itemcopy);
menuEdit.add(itemsearch);
menuEdit.add(itemadd);
defaultLayout(f);
}
private static void defaultLayout(JFrame f) {
//布局常用方式
f.setSize(350, 250);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
运行截图:
题目三
(三)按要求编程实现。
要求:
(1)编写一个窗口,在窗口中有一个面板和三个按钮。
(2)窗口的中间为面板,南边为三个按钮。
(3)按钮的颜色分别为红、绿、蓝。按钮上标签的名字分别为“红色”,“绿色”,“蓝色”。
(4)单击相应的按钮,在画布上绘制相应颜色的填充圆。
源码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test03 {
public static void main(String[] args) {
new MyFrame3();
}
}
class MyCanvas extends JComponent {
private Color c = Color.black;
public void paint(Graphics g) {
g.setColor(c);
g.fillOval(10, 10, 200, 200);
}
public Color getC() {
return c;
}
public void setC(Color c) {
this.c = c;
}
}
class MyFrame3 extends JFrame {
JPanel panel;
JButton red, green, blue;
MyCanvas canvas;
MyFrame3() {
canvas = new MyCanvas();
panel = new JPanel();
red = new JButton("红色");
red.setBackground(Color.red);
red.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
canvas.setC(Color.red);
canvas.repaint();
}
});
green = new JButton("绿色");
green.setBackground(Color.green);
green.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
canvas.setC(Color.green);
canvas.repaint();
}
});
blue = new JButton("蓝色");
blue.setBackground(Color.blue);
blue.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
canvas.setC(Color.blue);
canvas.repaint();
}
});
this.add(canvas, BorderLayout.CENTER);
panel.add(red);
panel.add(green);
panel.add(blue);
this.add(panel, BorderLayout.SOUTH);
setSize(300, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(true);
setVisible(true);
}
}
运行截图:
实验小结:
收获:
1、三种布局模式:1)BorderLayout 2)FloatLayout 3)SpringLayout
2、学会布局模式,以及组件的添加。
3、学会监听事件的运用,如鼠标点击事件,键盘按下事件等。
4、学会菜单栏的创建,快捷键、菜单栏子项的添加。
5、常用布局代码:
f.setSize(350, 250); //设置大小
f.setLocationRelativeTo(null); //显示在中间
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭
f.setVisible(true); //可视化
6、swing以后较为少用,但是基础的布局方式以及组件需要了解和能熟悉运用。