一.计算题(共2 题,100.0分)
1
设计一个改变按钮背景色的GUI界面,实现要求如下:
(1)此界面包括一个按钮、一个单选按钮组。按钮上的初始文本为“请为我选择一种背景颜色”,此单选按钮组含有三个单选按钮,文本分别是“粉色”、“橙色”和“青色”。效果如图1所示。
(2)分别为这三个单选按钮注册选项监听器(ItemListener),当选择“粉色”单选按钮时,按钮上的背景颜色改为“粉色”,文本内容改为“我的背景色变为了粉色”;以次类推,效果如图2、3、4所示。
1
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class t1 extends JFrame {
private JPanel p1, p2;
private JButton btnBig;
private JRadioButton rbPink, rbOrange, rbCyan;
private ButtonGroup bg;
t1() {
super("改变按钮的颜色");
p1 = new JPanel(new BorderLayout());
p2 = new JPanel();
btnBig = new JButton("请为我选择一种背景颜色");
rbPink = new JRadioButton("粉色", false);
rbOrange = new JRadioButton("橙色", false);
rbCyan = new JRadioButton("青色", false);
bg = new ButtonGroup();
bg.add(rbPink);
bg.add(rbOrange);
bg.add(rbCyan);
p1.add(btnBig, BorderLayout.CENTER);
p2.add(rbPink);
p2.add(rbOrange);
p2.add(rbCyan);
p1.add(p2, BorderLayout.SOUTH);
rbPink.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
btnBig.setText("我的背景色变为了粉色");
btnBig.setBackground(Color.PINK);
}
});
rbOrange.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
btnBig.setText("我的背景色变为了橙色");
btnBig.setBackground(Color.ORANGE);
}
});
rbCyan.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
btnBig.setText("我的背景色变为了青色");
btnBig.setBackground(Color.CYAN);
}
});
this.add(p1);
this.setBounds(280, 300, 300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new t1();
}
}
2
设计一个能改变按钮字号的GUI界面,具体实现要求如下:
(1)界面中包括一个标签、一个组合框(可选项为:12、16、20)、一个初始文本为“请在组合框中为我选择字号!”的按钮,此按钮背景色为Color.YELLOW,面板采用网格布局,效果如下图1所示。
(2)为组合框注册选项监听器(ItemListener),当选择组合框的一个值时,按钮文本的字号就变为组合框中选中的值,并把按钮上的文本重新设置为:“我现在是XX号字体”,效果图如2、3、4、5所示。(说明:new Font(String 字体, int 字体样式, int 字号))
2
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class t2 extends JFrame {
private JPanel p1, p2;
private JLabel lbSize;
private JComboBox cmbSize;
private JButton btnOk;
private t2() {
super("改变按钮的字号");
p1 = new JPanel(new GridLayout(2, 1));
p2 = new JPanel();
lbSize = new JLabel("请为按钮的文本选择字号:");
cmbSize = new JComboBox(new String[] { "12", "16", "20", "22" });
btnOk = new JButton("请在组合框中为我选择字号!");
btnOk.setBackground(Color.yellow);
p2.add(lbSize);
p2.add(cmbSize);
p1.add(p2);
p1.add(btnOk);
cmbSize.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
String str = (String) cmbSize.getSelectedItem();
btnOk.setText("我现在是" + str + "号字体");
btnOk.setFont(new Font("宋体", Font.PLAIN, Integer.parseInt(str)));
}
});
this.add(p1);
this.setBounds(900, 300, 300, 250);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new t2();
}
}