Fedora21上Java程序JFrame的toFront()方法无效?

系统是Fedora21(20161130),内置 jdk8-rc21。

测试程序:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ToFrontTest {

public static void main(String[] args) {
JFrame fm = new JFrame("主窗口");
fm.setBounds(100,100,300,300);
JFrame fmToFront = new JFrame("副窗口");
fmToFront.setBounds(150,150,300,300);
JPanel jp = new JPanel();
fm.setContentPane(jp);
JButton bt = new JButton("副窗口前置");
bt.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// 前置
fmToFront.toFront();
}
});
jp.add(bt);
fmToFront.setVisible(true);
fm.setVisible(true);
}
}
复现步骤:
# javac ToFrontTest.java
# java ToFrontTest

执行命令后出现2个窗口,主窗口和副窗口

点击主窗口上的‘副窗口前置’按钮后,副窗口不能前置。

请确认是否是JDK问题?
已邀请:

loongnix

赞同来自:

附:marco软件包的升级过程,供开发者参考

下载:
https://mirrors.aliyun.com/fedora/releases/22/Everything/source/SRPMS/m/marco-1.10.0-2.fc22.src.rpm

编译:
$ rpm -hvi marco-1.10.0-2.fc22.src.rpm
$ cd ~/rpmbuild/SPECS

以管理员身份运行:
# yum build-dep marco

以普通用户身份运行:
$ rpmbuild -ba marco.spec

以管理员身份运行:
# cd ../RPMS/mips64el
# yum install marco-1.10.0-2.fc21.loongson.mips64el.rpm
测试:
重启机器,重新登录,再运行示例java程序,一切正常。

loongnix

赞同来自:

已经做的一些测试 :
  • 在X86的Fedora25上,程序正常。
  • 在龙芯的Fedora25上,程序正常。
  • 在龙芯的Ubuntu上,程序正常。
  • 在龙芯的Fedora21上,程序不正常。(上面用的JDK都是相同的rc21)
  • 在中标桌面7.0龙芯版上,程序不正常。
  • 该问题在CentOS上不存在,使用zero jdk和龙芯jdk在Fedora 21上均复现,应该不是jdk的问题

由此推断,很可能是Fedora21的 mate桌面的一个Bug。我再继续排查。

loongnix

赞同来自:

问题已经解决,是Fedora21的窗口管理器(软件包marco)的一个bug。
升级marco到Fedora22的marco-1.10.0-2.fc22.src.rpm,问题解决。示例程序运行正常。
正在发布这个软件包,Fedora21的下一版ISO将集成。已安装Fedora21的机器也可以通过yum update更新这个软件包。

lihe

赞同来自:

请问有没有离线升级的方法?

loongnix

赞同来自:

目前提供的升级方法都是在线升级。

要回复问题请先登录注册