Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public class TransparentImageDialog
{
public static void main ( String[] args )
{
final ImageIcon ii = new ImageIcon ( "C:\\Users\\mgarin\\Desktop\\girl.png" );
JFrame frame = new JFrame ();
frame.getContentPane ().add ( new JComponent()
{
protected void paintComponent ( Graphics g )
{
Graphics2D g2d = ( Graphics2D ) g;
g2d.setComposite ( AlphaComposite.getInstance ( AlphaComposite.SRC_OVER, 0.5f ) );
g2d.drawImage ( ii.getImage (), 0, 0, null );
}
} );
frame.setUndecorated ( true );
frame.setSize ( ii.getIconWidth (), ii.getIconHeight () );
AWTUtilities.setWindowOpaque ( frame, false );
frame.setLocation ( 400, 300 );
frame.setVisible ( true );
}
}public class TransparentImageDialog
{
public static void main ( String[] args )
{
final ImageIcon ii =
new ImageIcon ( TransparentImageDialog.class.getResource ( "icons/girl.png" ) );
JFrame frame = new JFrame ();
frame.getContentPane ().add ( new JLabel( "Test text", JLabel.CENTER )
{
{
setForeground ( Color.BLACK );
MoveAdapter moveAdapter = new MoveAdapter ();
addMouseListener ( moveAdapter );
addMouseMotionListener ( moveAdapter );
}
protected void paintComponent ( Graphics g )
{
Graphics2D g2d = ( Graphics2D ) g;
Composite comp = g2d.getComposite ();
g2d.setComposite ( AlphaComposite.getInstance ( AlphaComposite.SRC_OVER, 0.5f ) );
g2d.drawImage ( ii.getImage (), 0, 0, null );
g2d.setComposite ( comp );
g2d.setRenderingHint ( RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON );
super.paintComponent ( g );
}
} );
frame.setUndecorated ( true );
frame.setSize ( ii.getIconWidth (), ii.getIconHeight () );
AWTUtilities.setWindowOpaque ( frame, false );
frame.setLocation ( 400, 300 );
frame.setVisible ( true );
}
private static class MoveAdapter extends MouseAdapter
{
private boolean dragging = false;
private int prevX = -1;
private int prevY = -1;
public void mousePressed ( MouseEvent e )
{
if ( SwingUtilities.isLeftMouseButton ( e ) )
{
dragging = true;
}
prevX = e.getXOnScreen ();
prevY = e.getYOnScreen ();
}
public void mouseDragged ( MouseEvent e )
{
if ( prevX != -1 && prevY != -1 && dragging )
{
Window w = SwingUtilities.getWindowAncestor ( e.getComponent () );
if ( w != null && w.isShowing () )
{
Rectangle rect = w.getBounds ();
w.setBounds ( rect.x + ( e.getXOnScreen () - prevX ),
rect.y + ( e.getYOnScreen () - prevY ), rect.width, rect.height );
}
}
prevX = e.getXOnScreen ();
prevY = e.getYOnScreen ();
}
public void mouseReleased ( MouseEvent e )
{
dragging = false;
}
}
}g2d.setRenderingHint ( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );g2d.setRenderingHint ( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON );Там также есть несколько вариантов антиалиасинга текста.UIManager.put ( SwingUtilities2.AA_TEXT_PROPERTY_KEY,
SwingUtilities2.AATextInfo.getAATextInfo ( true ) );Object aaTextInfo = SwingUtilities2.AATextInfo.getAATextInfo(true);
table.put(SwingUtilities2.AA_TEXT_PROPERTY_KEY, aaTextInfo);
this.aaSettings = new FontDesktopProperty(SunToolkit.DESKTOPFONTHINTS);А кроссплатформенность действительно нужна чаще всего только в рамках одной экосистемы. Все остальное — чаще всего мелкие проекты, борящиеся со следствием корявой ит-инфраструктуры, либо опять же, десктопная мелочь и всерьез это рассматривать просто нет никакого смысла.
Окна «неправильной» формы, Java 6 & 7 ed