Что такое собственный доступ к Java (JNA) ?
JNA обеспечивает программам Java легкий доступ к собственным разделяемым библиотекам (DLL в Windows) без написания чего-либо, кроме кода Java — не требуется JNI или собственный код. JNA позволяет напрямую вызывать собственные функции, используя вызовы естественного метода Java.
Код
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import javax.swing.JFrame; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import com.sun.jna.platform.WindowUtils; public class TransparentFrame extends JFrame { public TransparentFrame() { setTitle( 'Transparent Frame' ); setSize( 400 , 400 ); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JSlider slider = new JSlider(JSlider.HORIZONTAL, 30 , 100 , 100 ); slider.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { JSlider slider = (JSlider) e.getSource(); if (!slider.getValueIsAdjusting()){ WindowUtils.setWindowAlpha(TransparentFrame. this , slider.getValue()/100f); } } }); add(slider); setVisible( true ); } public static void main(String[] args) { SwingUtilities.invokeLater( new Runnable() { @Override public void run() { new TransparentFrame(); } }); } } |
Здесь класс WindowUtils представлен в JNA jar (platform.jar). Метод setWindowAlpha класса WindowUtils используется, чтобы сделать окно прозрачным. Первым аргументом этого метода является ваш фрейм / окно, а вторым аргументом является альфа-значение. Этот класс также имеет метод setWindowTransparent, который также можно использовать для прозрачности окна.
зависимости
Для запуска этой программы вам понадобятся следующие 2 jar: (Оба файла jar доступны для загрузки на GitHub для JNA .)
- jna.jar
- platform.jar
Чтобы запустить приведенный выше код в Windows, вам нужно установить системное свойство «sun.java2d.noddraw» перед вызовом функции WindowUtils.
1
|
System.setProperty( 'sun.java2d.noddraw' , 'true' ); |
Выход
Дополнительные замечания
Я проверил этот код на следующих машинах:
- Windows XP с пакетом обновления 3 (32 бита)
- Windows 7 (32 бит)
- Cent OS 5 (32 бит)
Если вы тестируете его на других машинах или имеете код для других машин, использующих JNA для той же функциональности, то не стесняйтесь делиться им в качестве комментария к этому сообщению.
Приятного кодирования и не забудьте поделиться!
Ссылка: Прозрачный JFrame с использованием JNA от нашего партнера JCG Харш Равал в блоге harryjoy .