所以我已经在互联网上找了一段时间了,这似乎是每个人建议的最常见的方式,但现在我想问的是,是否有更好的方法在点击时弹出一个新的jframe。
守则:
JLabel prevention = new JLabel("<html><U><font color='red'>Prevencija</font><U></html>");
prevention.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 100));
prevention.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFrame jf = new JFrame("Prevencija");
jf.setContentPane(new PreventionPanel());
jf.setSize(new Dimension(400, 400));
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
bottom.add(prevention);发布于 2016-02-13 20:40:20
一般来说,代码是很好的,这里有几个注意事项。
mouseClicked()方法的主体提取到一个单独的方法中,以防有更多的代码执行相同的操作,比如在侦听击键时。JButton而不是JLabel,使用ActionListener甚至Action来代替MouseListener。使用MouseListener在mouseClicked上对整个JLabel区域进行反应,就像在物理级别上复制Swing已经在逻辑级别上提供的东西一样。WindowConstants.EXIT_ON_CLOSE而不是JFrame.EXIT_ON_CLOSE,因为这是最初的定义。DISPOSE_ON_CLOSE而不是EXIT_ON_CLOSE来处理所有帧。使用EXIT_ON_CLOSE的应用程序测试变得更加困难。当DISPOSE_ON_CLOSE不能工作时,通常意味着您有一个糟糕的应用程序设计或线程方面的错误。JDialog或JOptionPane而不是JFrame。也许是JOptionPane.showMessageDialog()。我只能建议查看这些信息,而不是判断它们是否更适合您的用例,因为您的代码和描述没有提供足够的信息来提供更多的信息。https://codereview.stackexchange.com/questions/119892
复制相似问题