У меня проблема с разочарованием. У меня есть приложение, в котором колесо прокрутки не работает в окне JDialog (но работает в JFrame).Колесо мыши не прокручивается в JDialog, но работает в JFrame
Вот код:
import javax.swing.*;
import java.awt.event.*;
public class Failtest extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Failtest();
}
});
}
public Failtest() {
super();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("FRAME");
JScrollPane sp1 = new JScrollPane(getNewList());
add(sp1);
setSize(150, 150);
setVisible(true);
JDialog d = new JDialog(this, false);// NOT WORKING
//JDialog d = new JDialog((JFrame)null, false); // NOT WORKING
//JDialog d = new JDialog((JDialog)null, false);// WORKING - WHY?
d.setTitle("DIALOG");
d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
JScrollPane sp = new JScrollPane(getNewList());
d.add(sp);
d.setSize(150, 150);
d.setVisible(true);
}
public JList getNewList() {
String objs[] = new String[30];
for(int i=0; i<objs.length; i++) {
objs[i] = "Item "+i;
}
JList l = new JList(objs);
return l;
}
}
Я нашел решение, которое присутствует в качестве комментария в коде Java - конструктор, принимающий (JDialog) нулевой параметр.
Может кто-нибудь просветить меня? Мое мнение, что это ошибка Java.
Проверено на Windows XP-SP3 с 1 JDK и 2 JREs:
D:\Program Files\Java\jdk1.6.0_17\bin>javac -version
javac 1.6.0_17
D:\Program Files\Java\jdk1.6.0_17\bin>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
D:\Program Files\Java\jdk1.6.0_17\bin>cd ..
D:\Program Files\Java\jdk1.6.0_17>java -version
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
Спасибо заранее,
Юлиан Şerbănoiu
PS: Проблема не нова - код взято с форума (here), где эта проблема также упоминалась, но пока нет решений (0)
LATER EDIT: Проблемы сохраняется с JRE/jdk_1.6.0_10, 1.6.0_16 также
СПУСТЯ EDIT 2: Назад домой, протестировано на Linux (Ubuntu - осознанная/рысь) - оба с OpenJDK и солнцезащитным козырьком Java от дистрибутив репо и он работает (я использовал файл .class, скомпилированный в Windows) !!! - поэтому я считаю, что сталкиваюсь с ошибкой JRE, которая возникает в некоторых конфигурациях Windows.
Пожалуйста, не задавайте нам вопросы 2-в-1. –
Не могли бы вы рассказать? Я только сказал, что это не работает с JDialog в некоторых конфигурациях (XP SP3 мой случай), и я хотел бы знать обходное решение, если это возможно. Теперь я знаю, что в некоторых конфигурациях (событие с тем же JRE) оно работает – INS