消息面板import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics; import javax.swing.JPanel; public class MessagePanel extends JPanel { private String message; private int xCoordinate =20; private int yCoordinate =20; private boolean centered; private int interval = 10; public MessagePanel(){ } public MessagePanel(String message){ this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public int getXCoordinate() { return xCoordinate; } public void setXCoordinate(int coordinate) { xCoordinate = coordinate; } public int getYCoordinate() { return yCoordinate; } public void setYCoordinate(int coordinate) { yCoordinate = coordinate; } public boolean isCentered() { return centered; } public void setCentered(boolean centered) { this.centered = centered; repaint(); } public int getInterval() { return interval; } public void setInterval(int interval) { this.interval = interval; repaint(); } protected void paintComponent(Graphics g){ super.paintComponent(g); if(centered){ FontMetrics fm = g.getFontMetrics(); int stringWidth = fm.stringWidth(message); int stringAscent = fm.getAscent(); xCoordinate = getWidth()/2-stringWidth/2; yCoordinate = getHeight()/2-stringAscent/2; } g.drawString(message, xCoordinate, yCoordinate); } public void moveLeft(){ xCoordinate -= interval; repaint(); } public void moveRight(){ xCoordinate += interval; repaint(); } public void moveUp(){ yCoordinate -= interval; repaint(); } public void moveDown(){ yCoordinate -= interval; repaint(); } public Dimension getPreferredSize(){ return new Dimension(200,30); } } 按钮面板import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; public class RadioButton extends ButtonDemo { private JRadioButton jRed,jYellow,jWhite,jGray,jGreen; public RadioButton(){ JPanel p = new JPanel(); p.setLayout(new GridLayout(2,1)); p.add(new JLabel("Select Message Panel Background")); JPanel JRadioButton = new JPanel(); JRadioButton.setLayout(new GridLayout(1,5)); JRadioButton.add(jRed = new JRadioButton("Red")); JRadioButton.add(jYellow = new JRadioButton("Yellow")); JRadioButton.add(jWhite = new JRadioButton("White")); JRadioButton.add(jGray = new JRadioButton("Gray")); JRadioButton.add(jGreen = new JRadioButton("Green")); p.add(JRadioButton); add(p,BorderLayout.NORTH); ButtonGroup group = new ButtonGroup(); group.add(jRed); group.add(jYellow); group.add(jWhite); group.add(jGray); group.add(jGreen); jRed.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ message.setForeground(Color.red); } }); jYellow.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ message.setForeground(Color.yellow); } }); jWhite.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ message.setForeground(Color.white); } }); jGray.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ message.setForeground(Color.gray); } }); jGreen.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ message.setForeground(Color.green); } }); jWhite.setSelected(true); message.setForeground(Color.blue); } public static void main(String[] args) { RadioButton frame = new RadioButton(); frame.setTitle("Exercise15_1"); frame.setSize(400, 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 测试程序import java.awt.BorderLayout; 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.JPanel; public class ButtonDemo extends JFrame { protected MessagePanel message = new MessagePanel("Welcome to Java"); private JButton jbtLeft = new JButton("<="); private JButton jbtRight = new JButton("=>"); public ButtonDemo() { JPanel jB = new JPanel(); jB.setLayout(new FlowLayout()); jB.add(jbtLeft); jB.add(jbtRight); jbtLeft.setMnemonic('L'); jbtRight.setMnemonic('R'); jbtLeft.setToolTipText("Move massage to left"); jbtRight.setToolTipText("Move massage to right"); setLayout(new BorderLayout()); add(message,BorderLayout.CENTER); add(jB,BorderLayout.SOUTH); jbtLeft.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ message.moveLeft(); } }); jbtRight.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ message.moveRight(); } }); } }