📄 tooltipshack.java
字号:
import javax.swing.*;import java.awt.*;import java.awt.geom.*;public class ToolTipsHack { public static void main(String[] args) { RepaintManager.setCurrentManager(new FullRepaintManager()); System.out.println(" light = " + ToolTipManager.sharedInstance().isLightWeightPopupEnabled()); ToolTipManager.sharedInstance().setLightWeightPopupEnabled(true); System.out.println(" light = " + ToolTipManager.sharedInstance().isLightWeightPopupEnabled()); JButton button; JFrame frame = new JFrame("Tool Tips Hack"); BoxLayout layout = new BoxLayout( frame.getContentPane(), BoxLayout.Y_AXIS); frame.getContentPane().setLayout(layout); button = new CustomJButton(); button.setText("Open"); button.setToolTipText("Open an existing file"); frame.getContentPane().add(button); button = new CustomJButton(); button.setText("Save"); button.setToolTipText("Save the currently open file"); frame.getContentPane().add(button); frame.getContentPane().add(new JLabel("a label")); frame.getContentPane().add(new JLabel("a label")); frame.getContentPane().add(new JLabel("a label")); frame.pack(); frame.setSize(400,400); frame.show(); System.out.println(" light = " + ToolTipManager.sharedInstance().isLightWeightPopupEnabled()); } }class CustomJButton extends JButton { JToolTip _tooltip; public CustomJButton() { _tooltip = new CustomToolTip(); _tooltip.setComponent(this); System.out.println("tooltip = " + _tooltip); System.out.println(" tooltip = " + _tooltip.isLightweight()); } public JToolTip createToolTip() { return _tooltip; } }class CustomToolTip extends JToolTip { public CustomToolTip() { super(); this.setOpaque(false); System.out.println("light = " + this.isLightweight()); System.out.println(" light x = " + ToolTipManager.sharedInstance().isLightWeightPopupEnabled()); } public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); return new Dimension((int)dim.getWidth()+20,(int)dim.getHeight()+20); } public void paintComponent(Graphics g) { // set the parent opaque Component parent = this.getParent(); if(parent != null) { if(parent instanceof JComponent) { JComponent jparent = (JComponent)parent; if(jparent.isOpaque()) { jparent.setOpaque(false); } } } // create a round rectangle Shape round = new RoundRectangle2D.Float(4,4, this.getWidth()-1-8, this.getHeight()-1-8, 15,15); // draw the white background Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setColor(Color.white); g2.fill(round); // draw the gray border g2.setColor(Color.gray); g2.setStroke(new BasicStroke(5)); g2.draw(round); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); // draw the text String text = this.getComponent().getToolTipText(); if(text != null) { FontMetrics fm = g2.getFontMetrics(); int h = fm.getAscent(); g2.setColor(Color.black); g2.drawString(text,10,(this.getHeight()+h)/2); } } public void setToolTipText(String str) { super.setToolTipText(str); System.out.println("set tooltip text called"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -