⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listrenderingtest.java

📁 core java
💻 JAVA
字号:
/**
 * @version 1.20 27 Jun 1998
 * @author Cay Horstmann
 */

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

class FontCellRenderer implements ListCellRenderer
{  public Component getListCellRendererComponent
      (final JList list, final Object value,
      final int index, final boolean isSelected,
      final boolean cellHasFocus)
   {  return new JPanel()
         {  public void paintComponent(Graphics g)
            {  super.paintComponent(g);
               Font font = (Font)value;
               String text = font.getFamily();
               FontMetrics fm = g.getFontMetrics(font);
               g.setColor(isSelected
                  ? list.getSelectionBackground()
                  : list.getBackground());
               g.fillRect(0, 0, getWidth(), getHeight());
               g.setColor(isSelected
                  ? list.getSelectionForeground()
                  : list.getForeground());
               g.setFont(font);
               g.drawString(text, 0, fm.getAscent());
            }

            public Dimension getPreferredSize()
            {  Font font = (Font)value;
               String text = font.getFamily();
               Graphics g = getGraphics();
               FontMetrics fm = g.getFontMetrics(font);
               return new Dimension(fm.stringWidth(text),
                  fm.getHeight());
            }
         };
   }
}

class ListRenderingFrame extends JFrame
   implements ListSelectionListener
{  public ListRenderingFrame()
   {  setTitle("ListRenderingTest");
      setSize(400, 300);
      addWindowListener(new WindowAdapter()
         {  public void windowClosing(WindowEvent e)
            {  System.exit(0);
            }
         } );

      Vector fonts = new Vector();
      fonts.add(new Font("Serif", Font.PLAIN, 12));
      fonts.add(new Font("SansSerif", Font.PLAIN, 12));
      fonts.add(new Font("Monospaced", Font.PLAIN, 12));
      fonts.add(new Font("Dialog", Font.PLAIN, 12));
      fonts.add(new Font("DialogInput", Font.PLAIN, 12));
      JList fontList = new JList(fonts);
      fontList.setSelectionMode
         (ListSelectionModel.SINGLE_SELECTION);
      fontList.setCellRenderer(new FontCellRenderer());
      JScrollPane scrollPane = new JScrollPane(fontList);

      JPanel p = new JPanel();
      p.add(scrollPane);
      fontList.addListSelectionListener(this);

      getContentPane().add(p, "South");
      panel = new ListRenderingPanel();
      getContentPane().add(panel, "Center");
   }

   public void  valueChanged(ListSelectionEvent evt)
   {  JList source = (JList)evt.getSource();
      Font font = (Font)source.getSelectedValue();
      panel.setFont(font);
   }

   private ListRenderingPanel panel;
}

class ListRenderingPanel extends JPanel
{  public ListRenderingPanel()
   {  setFont(new Font("Serif", Font.PLAIN, 12));
   }

   public void setFont(Font f)
   {  currentFont = f;
      repaint();
   }

   public void paintComponent(Graphics g)
   {  super.paintComponent(g);
      g.setFont(currentFont);
      g.drawString
         ("The quick brown fox jumps over the lazy dog",
         0, 50);
   }

   private Font currentFont;
}

public class ListRenderingTest
{  public static void main(String[] args)
   {  JFrame frame = new ListRenderingFrame();
      frame.show();
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -