代码之家  ›  专栏  ›  技术社区  ›  Aly

带信息链接的jradio按钮

  •  0
  • Aly  · 技术社区  · 14 年前

    我想要一组jradiobuttons,在每一个旁边都有一个小的“i”图像,单击它将打开一个新窗口,其中包含有关单选按钮旁边文本的信息。将小的“i”标签与单选按钮对齐的最佳组件是什么?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Riduidel    14 年前

    有一些方法可以用样式来实现这一点。

    最简单的方法显然是 JButton 你的收音机按钮旁边有一个“i”图像。使用正确的布局管理器( GridBagLayout 当然)可以让您轻松地将两者对齐。

    另一种方法是在单选按钮中设置客户端属性,然后让单选按钮渲染器(在look'n'feel中)使用此客户端属性显示按钮旁边的“i”图标。不幸的是,这是一个有点困难的顶实现,因为它要求您管理正确的单选按钮边界,以包括图像在需要时(这也是实现在LNF,但不容易找到)。

        2
  •  1
  •   Thomas    14 年前

    将您的图像作为 javax.swing.ImageIcon JRadioButton . 然后听鼠标单击按钮,检查鼠标指针的坐标是否在图像的边界内。

        3
  •  0
  •   gencoreoperative    14 年前

    我发现像jLabel这样的东西对于问题的“i”部分的组件类型最有用。像所有组件一样,jLabels也可以添加鼠标监听器,当用户单击鼠标监听器时,您可以从中获得触发某个事件所需的访问权限。

    在下面的代码中,我使用了一个简单的flowlayout,如果您不喜欢使用gridbaylayout,那么它就像是一个逻辑拟合来提供水平对齐。最终,它将取决于您如何设置布局,但在这些情况下,类似于流布局的功能会有所帮助。

    例如,请查看以下代码:

    public class Main {
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable(){
                public void run() {
                    final JFrame f = new JFrame();
                    f.setLayout(new BorderLayout());
                    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
                    JPanel p = new JPanel(new FlowLayout());
                    JLabel l = new JLabel(new ImageIcon(Main.class.getResource("info.png")));
                    l.addMouseListener(new MouseAdapter(){
                        @Override
                        public void mouseReleased(MouseEvent e) {
                            JOptionPane.showMessageDialog(f, "Clicked");
                        }
                    });
                    p.add(new JRadioButton());
                    p.add(l);
    
                    f.add(p, BorderLayout.CENTER);
                    f.pack();
                    f.setLocationRelativeTo(null);
                    f.setVisible(true);
                }
            });
        }
    }