📄 guidemo12.java
字号:
//Example 12 of Chapter 5
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class GUIDemo12
{
JFrame f;
JLabel picture;
JPanel left, right;
String name[] = { "数学", "化学", "计算机", "地质", "外语", "文史" };
JRadioButton jrb[];
JComboBox box;
JList list;
public void Demo()
{
JFrame f = new JFrame("校园建筑展示");
picture = new JLabel( new ImageIcon( "数学"+".jpg") );
picture.setVerticalTextPosition( JLabel.TOP ); //设置标签中文字的垂直位置
picture.setHorizontalTextPosition( JLabel.CENTER ); //设置标签中文字的水平位置
picture.setText( "校园建筑展示:"+"数学"); //定义此组件将要显示的单行文本
picture.setPreferredSize( new Dimension(256,222) );
left = new JPanel();
left.setLayout( new GridLayout(6,1) );
right = new JPanel();
right.setLayout( new BorderLayout() );
ButtonGroup group = new ButtonGroup();
jrb = new JRadioButton[ name.length ];
RadioListener myListener = new RadioListener();
for (int i=0; i<name.length; i++)
{
jrb[i] = new JRadioButton( name[i] );
int j = i+1;
jrb[i].setActionCommand( name[i] ); //设置按纽的动作命令
group.add( jrb[i] ); //将按钮加入单选组
jrb[i].addActionListener(myListener); //为按钮设置监听器
left.add( jrb[i] ); //将按钮放入左侧的PANEL
}
jrb[0].setMnemonic(KeyEvent.VK_1); //设置按钮的操作键为ALT+1
jrb[1].setMnemonic(KeyEvent.VK_2); //设置按钮的操作键为ALT+2
jrb[2].setMnemonic(KeyEvent.VK_3); //设置按钮的操作键为ALT+3
jrb[3].setMnemonic(KeyEvent.VK_4); //设置按钮的操作键为ALT+4
jrb[4].setMnemonic(KeyEvent.VK_5); //设置按钮的操作键为ALT+5
jrb[5].setMnemonic(KeyEvent.VK_6); //设置按钮的操作键为ALT+6
jrb[0].setSelected(true); //设置第一个按钮为选定状态
box = new JComboBox( name );
box.setEditable( false ); //设置组合框为不可编辑
box.addActionListener( new ComboBoxListener());//为组合框设置监听器
list = new JList( name );
list.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );//设置列表为单选
list.addListSelectionListener( new ListListener( ));//为列表设置监听器
right.add( box, BorderLayout.NORTH );
right.add( list, BorderLayout.CENTER );
f.getContentPane().setLayout( new BorderLayout());
f.getContentPane().add( left, BorderLayout.WEST );
f.getContentPane().add( picture, BorderLayout.CENTER );
f.getContentPane().add( right, BorderLayout.EAST );
f.setSize(400,260);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
GUIDemo12 gui = new GUIDemo12();
gui.Demo();
}
//用三个内部类实现监听器
private class RadioListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//获取选定项的索引值
int k = -1;
for(int i=0; i<name.length; i++)
{
if (name[i]==e.getActionCommand())k = i;
}
picture.setIcon(new ImageIcon(e.getActionCommand()+".jpg"));
picture.setText( "校园建筑展示:"+e.getActionCommand() );
box.setSelectedIndex( k );
list.setSelectedIndex( k );
}
}
private class ComboBoxListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int k = -1;
for(int i=0; i<name.length; i++)
{
if (name[i]==box.getSelectedItem())k = i;
}
picture.setIcon(new ImageIcon(box.getSelectedItem()+".jpg"));
picture.setText( "校园建筑展示:"+box.getSelectedItem() );
jrb[k].setSelected(true);
list.setSelectedIndex( k );
}
}
private class ListListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
int k = -1;
for(int i=0; i<name.length; i++)
{
if (name[i]==list.getSelectedValue())k = i;
}
picture.setIcon(new ImageIcon(list.getSelectedValue()+".jpg"));
picture.setText( "校园建筑展示:"+list.getSelectedValue() );
jrb[k].setSelected(true);
box.setSelectedIndex( k );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -