如何在jButton的右侧添加复选框?

Posted

技术标签:

【中文标题】如何在jButton的右侧添加复选框?【英文标题】:How to add checkbox to the right side of jButton? 【发布时间】:2014-02-06 21:08:43 【问题描述】:

我想在右侧创建一个带有复选框的按钮。 我试过这个,但复选框停留在按钮标签文本顶部的按钮中心。

欢迎提出任何想法。

提前致谢:

public class MainTest extends JPanel 
    JButton button;
    JPanel panel;
    public MainTest() 
        createComponents();
        layoutComponents();
    

    public void createComponents() 
        // attempting to add checkbox to button
        button = new JButton("Print with Edge");
        JCheckBox checkBox = new JCheckBox();
        jcb.setHorizontalAlignment(SwingConstants.RIGHT);
        button.add(checkBox,new BorderLayout());
        panel = new JPanel(new BorderLayout());
    

    public void layoutComponents() 
        panel.add(button,BorderLayout.SOUTH);
        add(panel);
    

    public static void main(String[] args) 
        MainTest demo = new MainTest();
        JFrame frame = new JFrame();
        Container cp = frame.getContentPane();
        cp.add(demo);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        frame.setLocation(500, 500);
        frame.setVisible(true);
    
 

【问题讨论】:

您误用“叶子”组件作为容器,不要;-) 尝试使用JToggleButton 【参考方案1】:

我想在右侧创建一个带有复选框的按钮。

也许您只想要文本右侧的复选框?

如果是这样,你可以这样做:

JCheckBox cb = new JCheckBox("Print with Edge");
cb.setHorizontalTextPosition(SwingConstants.LEADING);

【讨论】:

【参考方案2】:

您可以将 JCheckBox 包装在 JPanel 中,并使 JPanel 看起来像一个按钮。例如:

public class Test 

public static void main(String[] args) 
    JFrame frame = new JFrame();
    frame.setSize(new Dimension(100, 100));

    JCheckBox button = new JCheckBox();

    final JPanel buttonWrapper = new JPanel();
    buttonWrapper.add(new JLabel("Button Text"));
    buttonWrapper.add(button);
    buttonWrapper.setBorder(BorderFactory.createRaisedBevelBorder());
    buttonWrapper.addMouseListener(new MouseAdapter() 

        @Override
        public void mousePressed(MouseEvent me) 
            buttonWrapper.setBorder(BorderFactory.createEtchedBorder());
        



        @Override
        public void mouseReleased(MouseEvent me) 
            buttonWrapper.setBorder(BorderFactory.createRaisedBevelBorder());
        



        @Override
        public void mouseClicked(MouseEvent me) 
            System.out.println("mouse clicked");
        
    );

    JPanel mainPanel = new JPanel();
    mainPanel.add(buttonWrapper);

    frame.getContentPane().add(mainPanel);
    frame.setVisible(true);

【讨论】:

以上是关于如何在jButton的右侧添加复选框?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 jtable 中的复选框中获取选中的值?

如何将复选框添加到 ListActivity 而不会丢失 onListItemClick 功能?

如何编写 jButton 以将笔记本电脑或设备切换到省电模式

将复选框列添加到树左侧的 QTreeView 的方法?

复选框的离子选择 UI

如何为SQL Server2008添加登录账户并配置权限