Использование jwindow для окна плавающего инструмента заставляет окно владельца «мерцать» при щелчке в плавающее окноJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Использование jwindow для окна плавающего инструмента заставляет окно владельца «мерцать» при щелчке в плавающее окно

Сообщение Anonymous »

справочная информация
Я хотел бы создать окно инструмента/палитры (также называемое «плавающее» окно) в качели с java версией 1.6.0_26 . Я думал, что Jwindow - лучший выбор, а также указывает на Swing Documentation для использования JWindow для таких целей (плавающее окно, которое имеет рамку владельца, не имеет декорации, и отсутствие входа в Windows Wonders).
Содержимое окна «Br/2». /> Когда я вносит в окно плавающего инструмента в окне владельца (Jframe, мое «Основное окно приложения») «мерцает». «Flicker» выглядит так, как будто окно владельца теряет фокус для нескольких миллисекунд и получает фокус обратно, что приводит к очень быстрому отключению/включению окна (обратите внимание, что событие окна не запущено, например, Focus-Lost или Windows Deadivated). /> Я собрал простой пример кода, чтобы воспроизвести проблему: < /p>
import java.awt.*;
import javax.swing.*;

public class JWindowFlickerExample
{
public JWindowFlickerExample()
{
// I know swing code should be executed on the EDT,
// just wanted to keep it simple

// Create and show the "main application window"
JFrame frame = new JFrame( getClass().getSimpleName() );
frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
frame.setSize( 640, 480 );
frame.setLocationRelativeTo( null );
frame.setVisible( true );

// Create and show the "floating tool window"
MyFloatingToolWindow testWindow = new MyFloatingToolWindow( frame );
testWindow.setLocation( 400, 400 );
testWindow.setVisible( true );
}

public static void main( String[] args )
{
new JWindowFlickerExample();
}

@SuppressWarnings( "serial" )
private class MyFloatingToolWindow extends JWindow
{
public MyFloatingToolWindow( Window hostWindow )
{
super( hostWindow );

// setFocusableWindowState( false );
setSize( 300, 400 );
setLayout( null );
getContentPane().setBackground( Color.LIGHT_GRAY );

JTextField textField = new JTextField();
textField.setLocation( 50, 50 );
textField.setSize( 70, 30 );

add( textField );
}
}
}
< /code>
Прогресс до сих пор < /h2>
Я также попытался установить «window.setfocusablewindowstate» в False для окна плавающего инструмента. Если это ложь, нет «мерцания», проблема исчезла. Javadoc для этого метода указывает: < /p>

Установка состояния фокусировки окна на False является стандартным механизмом для приложения, чтобы идентифицировать окно AWT A, которое будет использоваться в качестве плавающей палитру или палитры инструментов, и, таким образом, должно быть нефиковое окно. Окно инструмента, конечно, потому что я не могу сосредоточиться (возможно, текстовое поле в окне плавающего инструмента является необычным, но в моем случае обязательно). Внедрение окна>

Подробнее здесь: https://stackoverflow.com/questions/924 ... flicker-wh
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»