Что такое собственный доступ к 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 .
.png)