【问题标题】:How to add checkbox to the right side of jButton?如何在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

标签: java swing components jbutton jcheckbox


【解决方案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);
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多