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

标签 java swing components jbutton jcheckbox

我想创建一个右侧带有复选框的按钮。 我尝试了此操作,但复选框保留在按钮标签文本顶部的按钮中心。

欢迎任何想法。

提前致谢:

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);
    }
} 

最佳答案

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

enter image description here

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);
}

}

关于java - 如何在jButton右侧添加复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187552/

相关文章:

java - 如何正确使用JMH? ArrayList 示例

java - Xuggler 生成错误消息

java - 更改 Android 应用程序代码中的按钮文本

java - 当用户输入文本时 Swing GUI 移动

jsf - 有条件地显示 JSF 组件

javascript - 如何使用 ngfor 循环显示数组中的每个组件

components - 组件和 bower 有什么区别?

java - 升级到 JUnit4 并通过同时运行遗留 JUnit 3 测试和测试套件来保留它们

JAVA/Swing(Eclipse): Program works step by step but not in normal execution

java - 如何在 JTextfield 内正确实现 SHIFT + BACKSPACE 按键