2014-01-17 68 views
0

我想創建一個複選框在其右側的按鈕。 我試過這個,但複選框停留在按鈕標籤文本頂部按鈕的中心。如何將複選框添加到jButton的右側?

任何想法welkom。

在此先感謝:

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

什麼是'jcb'? – Thomas

+1

您錯誤地將「leaf」組件用作容器,請勿;-) – kleopatra

+0

嘗試使用'JToggleButton' – ufis

回答

2

你可以用一個JPanel內JCheckBox的,使的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); 
} 

}

1

我想在它的右側創建複選框按鈕。

也許你只是想在文本右側的複選框?

如果是這樣,你可以這樣做:

JCheckBox cb = new JCheckBox("Print with Edge"); 
cb.setHorizontalTextPosition(SwingConstants.LEADING); 
相關問題