📄 spotlightdemo.java
字号:
import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import javax.swing.*;import javax.swing.border.*;public class SpotlightDemo extends JFrame{ private SpotlightPanel glassPane; private JComponent[] books; public SpotlightDemo() { super("Spotlight Demo"); glassPane = new SpotlightPanel(true); this.setGlassPane(glassPane); Container c = new GradientPanel(); setContentPane(c); c.setLayout(new BorderLayout()); JPanel headerPanel = new JPanel(new BorderLayout()); HeaderPanel header = new HeaderPanel(); headerPanel.add(BorderLayout.NORTH, header); headerPanel.add(BorderLayout.SOUTH, new JSeparator(JSeparator.HORIZONTAL)); c.add(BorderLayout.NORTH, headerPanel); JPanel booksPanel = new GradientPanel(); booksPanel.setOpaque(false); booksPanel.setLayout(new GridLayout(2, 3)); booksPanel.setBorder(new EmptyBorder(6, 0, 0, 0)); createBooks(booksPanel); c.add(BorderLayout.CENTER, booksPanel); JPanel searchPanel = new JPanel(); searchPanel.setOpaque(false); JLabel label = new JLabel("Search for books:"); searchPanel.add(label); JTextField searchField = new JTextField(12); searchField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { String text = ((JTextField) evt.getSource()).getText(); if ("sci-fi".equals(text)) createSciFiSpots(); else if ("books".equals(text)) createSpotsForAll(); else if ("pratchett".equals(text)) createPratchettSpots(); else if ("adams".equals(text)) createAdamsSpots(); } }); searchPanel.add(searchField); c.add(BorderLayout.SOUTH, searchPanel); pack(); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private void createSpotsForAll() { for (int i = 0; i < 6; i++) { addSpotForBook(i); } } private void createSciFiSpots() { addSpotForBook(0); for (int i = 3; i < 6; i++) { addSpotForBook(i); } } private void createAdamsSpots() { for (int i = 3; i < 6; i++) { addSpotForBook(i); } } private void createPratchettSpots() { addSpotForBook(2); } private void addSpotForBook(int i) { Point p = new Point(books[i].getLocation()); SwingUtilities.convertPointToScreen(p, books[i].getParent()); SwingUtilities.convertPointFromScreen(p, glassPane); glassPane.addSpotlight(p.x - 4, p.y - 4, 96, 152); } private void createBooks(JPanel container) { books = new JComponent[6]; for (int i = 0; i < books.length; i++) { JPanel buttonPanel = new JPanel(); buttonPanel.setOpaque(false); buttonPanel.add(books[i] = UIHelper.createLabel("", "cover" + (i + 1) + "_small_button")); container.add(buttonPanel); } } private static class GradientPanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); if (!isOpaque()) { return; } int width = getWidth(); int height = getHeight(); Graphics2D g2 = (Graphics2D) g; Paint storedPaint = g2.getPaint(); g2.setPaint(new GradientPaint(0, 0, Color.WHITE, width, height, new Color(200, 200, 200))); g2.fillRect(0, 0, width, height); g2.setPaint(storedPaint); } } public static void main(String[] args) { SpotlightDemo demo = new SpotlightDemo(); demo.setVisible(true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -