Java JWindow的窗口不';别动

Java JWindow的窗口不';别动,java,swing,jwindow,Java,Swing,Jwindow,我有一个从JWindow扩展而来的框架(因为我想处理我的X和-按钮),所以我不想装饰它。我的问题是,当我运行应用程序时,我不能拖动我的窗口-它固定在某个位置。我的代码如下(我选择的是大类,所以我选择了相关部分): 公共类统计窗口{ public StatisticsMainFrame() { bodyPane = new JPanel(); bodyPane.setLayout(new BoxLayout(bodyPane, BoxLayout.X_AXIS)); si

我有一个从
JWindow
扩展而来的框架(因为我想处理我的X和-按钮),所以我不想装饰它。我的问题是,当我运行应用程序时,我不能拖动我的窗口-它固定在某个位置。我的代码如下(我选择的是大类,所以我选择了相关部分):

公共类统计窗口{

public StatisticsMainFrame()
{
     bodyPane = new JPanel();
    bodyPane.setLayout(new BoxLayout(bodyPane, BoxLayout.X_AXIS));
    sideBannerPane = new JPanel(); // program banner
    buttonsPane = new JPanel(); // contains buttons
    contentPane = new JPanel();
    contentPane.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
    contentPane.setPreferredSize(new Dimension(500,500)); 
    // contentPane contains some panel for display data


    Container container = new Container();
    container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS));
    container.add(Box.createVerticalGlue());
    container.add(sideBannerPane);
    container.add(buttonsPane);
    container.add(contentPane);

    Container cont = new Container();
    cont.setLayout(new BoxLayout(cont, BoxLayout.Y_AXIS));
    //cont.add(Box.createHorizontalGlue());
    //cont.add(custDecorationPane);
    cont.add(container);
    add(cont);
    // Adding Panes

    setAlwaysOnTop(true);
    //setUndecorated(true);
    pack();

}

public static void main(String[] arg)
{
    new StatisticsMainFrame().setVisible(true);
}


private CustomFrameDecorationButtons custDecorationPane;
private JPanel bodyPane;
private JPanel contentPane;
private JPanel sideBannerPane;
private JPanel buttonsPane;

// buttonsPane components
private JLabel general_lbl;
private JLabel Diagnosis_lbl;
private JLabel chemotherapy_lbl;
private JLabel radiotherapy_lbl;
private JLabel surgery_lbl;
private JLabel hermonalTherapy_lbl;

private RootButton generalStatistics_btn;
private RootButton statOfAffectedSys_btn;
private RootButton statOfGrade_btn;
private RootButton statOfCombinations_btn;
private RootButton statOfResponses_btn;
private RootButton statOfRadiotherapy_btn;
private RootButton statOfSurgery_btn;
private RootButton statOfHermonaltherapy_btn;

private GeneralStatisticsContentPanel generalStatPane;
private StatisticsOfAffectedSystemPanel2 statOfAffectedSysPanel2;
private StatisticsOfGradePanel statOFGradingPanel;
private ChemotherapyCombinationStatisticsPanel statChemotherapyCombinationPanel;
private ChemotherapyResponseStatisticsPanel statChemotherapyResponsePanel;
private RadiotherapyStatisticsPanel radiotherapyPanel;
private SurgeryStatisticsPanel surgeryStatPanel;
private HermonaltherapyStatisticsPanel hermonaltherapy;

}

您可以使用以下代码添加自定义拖动:

addMouseMotionListener(new MouseMotionListener() {
    private int mx, my;

    @Override
    public void mouseMoved(MouseEvent e) {
        mx = e.getXOnScreen();
        my = e.getYOnScreen();
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        Point p = StatisticsMainFrame.this.getLocation();
        p.x += e.getXOnScreen() - mx;
        p.y += e.getYOnScreen() - my;
        mx = e.getXOnScreen();
        my = e.getYOnScreen();
        StatisticsMainFrame.this.setLocation(p);
    }
});

如果将此代码段直接放置在
StatisticsMainFrame
的构造函数中,则可以使用鼠标通过单击窗口内的任意位置来拖动窗口。(您也可以将侦听器添加到任何其他组件。)

您可以使用以下代码添加自定义拖动:

addMouseMotionListener(new MouseMotionListener() {
    private int mx, my;

    @Override
    public void mouseMoved(MouseEvent e) {
        mx = e.getXOnScreen();
        my = e.getYOnScreen();
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        Point p = StatisticsMainFrame.this.getLocation();
        p.x += e.getXOnScreen() - mx;
        p.y += e.getYOnScreen() - my;
        mx = e.getXOnScreen();
        my = e.getYOnScreen();
        StatisticsMainFrame.this.setLocation(p);
    }
});

如果将此代码段直接放置在
StatisticsMainFrame
的构造函数中,则可以使用鼠标通过单击窗口内的任意位置来拖动窗口。(您也可以将侦听器添加到任何其他组件。)

我在您的代码中看不到
JWindow
。你介意发一封信吗。。。事实上我是这样做的,但有时我会得到不合适的答案。。但是无论如何,我在你的代码中看不到
JWindow
。你介意发一封信吗。。。事实上我是这样做的,但有时我会得到不合适的答案。。但无论如何,thnx。。