import javax.swing.*; import java.awt.*; import java.awt.event.*; /* HtmlDemo.java needs no other files. */ public class HtmlDemo extends JPanel implements ActionListener { JLabel theLabel; JTextArea htmlTextArea; public HtmlDemo() { setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); String initialText = "\n" + "Color and font test:\n" + "\n"; htmlTextArea = new JTextArea(10, 20); htmlTextArea.setText(initialText); JScrollPane scrollPane = new JScrollPane(htmlTextArea); JButton changeTheLabel = new JButton("Change the label"); changeTheLabel.setMnemonic(KeyEvent.VK_C); changeTheLabel.setAlignmentX(Component.CENTER_ALIGNMENT); changeTheLabel.addActionListener(this); theLabel = new JLabel(initialText) { public Dimension getPreferredSize() { return new Dimension(200, 200); } public Dimension getMinimumSize() { return new Dimension(200, 200); } public Dimension getMaximumSize() { return new Dimension(200, 200); } }; theLabel.setVerticalAlignment(SwingConstants.CENTER); theLabel.setHorizontalAlignment(SwingConstants.CENTER); JPanel leftPanel = new JPanel(); leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.PAGE_AXIS)); leftPanel.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder( "Edit the HTML, then click the button"), BorderFactory.createEmptyBorder(10,10,10,10))); leftPanel.add(scrollPane); leftPanel.add(Box.createRigidArea(new Dimension(0,10))); leftPanel.add(changeTheLabel); JPanel rightPanel = new JPanel(); rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.PAGE_AXIS)); rightPanel.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("A label with HTML"), BorderFactory.createEmptyBorder(10,10,10,10))); rightPanel.add(theLabel); setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); add(leftPanel); add(Box.createRigidArea(new Dimension(10,0))); add(rightPanel); } //React to the user pushing the Change button. public void actionPerformed(ActionEvent e) { theLabel.setText(htmlTextArea.getText()); } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() { //Create and set up the window. JFrame frame = new JFrame("HtmlDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create and set up the content pane. JComponent newContentPane = new HtmlDemo(); newContentPane.setOpaque(true); //content panes must be opaque frame.setContentPane(newContentPane); //Display the window. frame.pack(); frame.setVisible(true); } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }