Java JTextPane не получает нажатия клавиш

У меня есть небольшой фрагмент кода ниже JWindow с JTextPane в нем. Когда я запускаю полный код в Netbeans, он создает красивое окно, но JTextPane не будет реагировать на события мыши или клавиатуры. Когда я навожу указатель мыши на него, появляется значок текстовой мыши, но когда я нажимаю на него, он выбирает окно Netbeans позади него. Я пытался вызвать метод setFocusable для JTextPane с помощью true, а также вызвал grabFocus. Как я могу заставить JTextPane реагировать на события мыши и клавиатуры?

У меня есть два файла. Один называется MainClass.java и просто создает новый объект MainWindow. MainWindow.java вот где проблема. У него искусственная строка заголовка, две стороны и JTextPanel по центру, что доставляет мне проблемы.

Обратите внимание, что использовать JFrame нельзя.

Спасибо!

MainWindow.java

package Window;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.JWindow;
import javax.swing.SpringLayout;

public class MainWindow extends JWindow{
    private Color TitleColor = new Color(18, 15, 65);
    private Color BGColor = new Color(50, 50, 50);

    public MainWindow(){
        GraphicsEnvironment env =
        GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle MaxBounds = env.getMaximumWindowBounds();

        SpringLayout Layout = new SpringLayout();
        Container ContentPane = this.getContentPane();
        this.setLayout(Layout);

        JPanel TitleBar = new JPanel();
        TitleBar.setBackground(TitleColor);
        TitleBar.setPreferredSize(new Dimension(0, 30));
        this.add(TitleBar);

        JPanel LeftPanel = new JPanel();
        LeftPanel.setBackground(BGColor);
        this.add(LeftPanel);

        JPanel RightPanel = new JPanel();
        RightPanel.setBackground(BGColor);
        this.add(RightPanel);

        JTextPane TextPane = new JTextPane();
        TextPane.setBackground(Color.WHITE);
        TextPane.setForeground(Color.BLACK);
        TextPane.setPreferredSize(new Dimension(700, 0));
        TextPane.setFocusable(true);
        TextPane.setMargin(new Insets(20,20,20,20));
        TextPane.grabFocus();
        this.add(TextPane);

        Layout.putConstraint(SpringLayout.EAST, TitleBar, 0, SpringLayout.EAST, ContentPane);
        Layout.putConstraint(SpringLayout.WEST, TitleBar, 0, SpringLayout.WEST, ContentPane);
        Layout.putConstraint(SpringLayout.NORTH, TitleBar, 0, SpringLayout.NORTH, ContentPane);

        Layout.putConstraint(SpringLayout.NORTH, TextPane, 0, SpringLayout.SOUTH, TitleBar);
        Layout.putConstraint(SpringLayout.SOUTH, TextPane, 0, SpringLayout.SOUTH, ContentPane);
        Layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, TextPane, 0, SpringLayout.HORIZONTAL_CENTER, ContentPane);

        Layout.putConstraint(SpringLayout.NORTH, LeftPanel, 0, SpringLayout.SOUTH, TitleBar);
        Layout.putConstraint(SpringLayout.SOUTH, LeftPanel, 0, SpringLayout.SOUTH, ContentPane);
        Layout.putConstraint(SpringLayout.EAST, LeftPanel, 0, SpringLayout.WEST, TextPane);
        Layout.putConstraint(SpringLayout.WEST, LeftPanel, 0, SpringLayout.WEST, ContentPane);

        Layout.putConstraint(SpringLayout.NORTH, RightPanel, 0, SpringLayout.SOUTH, TitleBar);
        Layout.putConstraint(SpringLayout.SOUTH, RightPanel, 0, SpringLayout.SOUTH, ContentPane);
        Layout.putConstraint(SpringLayout.EAST, RightPanel, 0, SpringLayout.EAST, ContentPane);
        Layout.putConstraint(SpringLayout.WEST, RightPanel, 0, SpringLayout.EAST, TextPane);

        this.setBounds(MaxBounds);
        this.setVisible(true);
    }
}

MainClass.java

package Window;

import javax.swing.SwingUtilities;

public class MainClass {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run(){
              new MainWindow();  
            }
        });
    }
}

person Tyler    schedule 14.09.2013    source источник


Ответы (1)


person mKorbel    schedule 14.09.2013
comment
Спасибо за ответ! Я обязательно протестирую это. - person Tyler; 15.09.2013
comment
Я не этого не знал! - person trashgod; 15.09.2013
comment
@trashgod ... camirks down_vote записал эту информацию мне в голову - person mKorbel; 15.09.2013