2014-06-07 3 views
1

버튼이 수평으로 놓여 차례 차례로 수직으로 화면에 올리는 방법을 알려줍니다. 나는 SwingConstants.xxxx를 추가하려고 시도했다. 그런 다음 item.SwingConstants.xxx는 수평 정렬 오류가 발생했다. 어떤 도움을 주셔서 감사합니다.버튼을 정렬하는 방법

import java.awt.*; 
import java.awt.event.*; 

import javax.swing.*; 

@SuppressWarnings("serial") 
public class Class_GUI_4 extends JFrame { 


    private JTextField tf; // textfield 
    private JCheckBox b1; // button 1 
    private JCheckBox b2; // button2 

    public Class_GUI_4() { 
     super("TITLE"); 
     setLayout(new FlowLayout()); 

     tf = new JTextField("A testing Sentence", 20); 
     tf.setFont(new Font("Serif", Font.PLAIN, 14)); 
     add(tf); 

     b1 = new JCheckBox("Bold"); 
     b2 = new JCheckBox("Italic"); 
     add(b1); 
     add(b2); 

     thehandler handler = new thehandler(); 
     b1.addItemListener(handler); 
     b2.addItemListener(handler); 
    } 

    private class thehandler implements ItemListener { 

     @Override 
     public void itemStateChanged(ItemEvent event) { 
      Font font = null; 
      if (b1.isSelected() && b2.isSelected()) 
       font = new Font("Serif", Font.BOLD + Font.ITALIC, 14); 
      else if (b1.isSelected()) 
       font = new Font("Serif", Font.BOLD, 14); 
      else if (b2.isSelected()) 
       font = new Font("Serif", Font.ITALIC, 14); 
      else 
       font = new Font("Serif", Font.PLAIN, 14); 
      tf.setFont(font); 
     } 

    } 

    public static void main(String[] args) { 
     Class_GUI_4 gui = new Class_GUI_4(); 
     gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     gui.setSize(200, 350); 
     gui.setVisible(true); 

    } 

} 

답변

1

어떻게 그들이 수직으로 화면에 올 수 있도록 (프로그램이 스타일에 충실 할)? 단락 내의 텍스트 행과 같이, 한방향에 컴퍼넌트를 배치이 경우 BoxLayout

setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)); 

대신 FlowLayout

보십시오.

enter image description here :

setLayout(new FlowLayout()); 

그것은 약 How to Use BoxLayout

enter image description here


하지 동일한 크기의 구성 요소를 추가,이 경우에 사용 GridLayout 다음과 같이 작업을 수행 읽는 가치


대신 GridBagLayout으로 시도 할 수 있습니다.

setLayout(new GridBagLayout()); 
GridBagConstraints gc = new GridBagConstraints(); 
gc.fill = GridBagConstraints.BOTH; 

//Set the margin between components top, left, bottom, right 
//gc.insets=new Insets(5, 5, 5, 5); 

tf = new JTextField("A testing Sentence", 20); 
tf.setFont(new Font("Serif", Font.PLAIN, 14)); 

gc.gridx = 0; // 1st row 
gc.gridy = 0; // 1st column 
gc.weighty = 0.9; // 90% 
add(tf, gc); 

b1 = new JCheckBox("Bold"); 
b2 = new JCheckBox("Italic"); 
gc.gridy = 1; // 2nd column 
gc.weighty = 0.05;// 5% 
add(b1, gc); 

gc.gridy = 2; // 3rd column 
gc.weighty = 0.05;// 5% 
add(b2, gc); 
당신은 당신의 UI 구성 요소를 포맷하는 Layout Manager를 사용할 필요가

enter image description here

+0

나는 모두를 시도하고 관찰 등 빠르고 신속한 대응을 위해 U 모두 감사합니다. 텍스트 필드의 크기를 줄이는 방법 (높이)을 알려주십시오. 전체 화면을 차지하고 두 개의 확인란을 사용하여 끝에는 거의 공간을 남기지 마십시오. 친절하게 스레드에 긍정적 인 점수를 남겨 둘 그래서 나는 주된 대답을 똑딱 거리고 난 후에 여러 개의 대답을 좋아할만큼 충분한 repo를 얻을 수있다. 다시 한번 감사드립니다 .... @ Braj –

+0

마지막 옵션을 시도하고 요구 사항에 따라 높이를 백분율로 변경하십시오. – Braj

0

, 당신이 선택할 수 있습니다 (백분율에서 귀하의 요구 사항에 따라 높이를 변경) : 더

How to Use GridBagLayout에 대한 샘플 코드 읽기 Grid Layout 또는 Box Layout 인 세로 맞춤을 만드는 데 도움이되는 레이아웃.

0

사용중인 레이아웃 관리자가 FlowLayout()이기 때문입니다. 대신에 코드를 교체하여

setLayout(new FlowLayout()); 

사용 GridLayout과 관리자 :

setLayout(new GridLayout(1,3) 
+0

내 게시물에서'GridLayout'을 사용할 때 어떻게 보일까요? – Braj

+0

맞습니다.하지만 문제는 수직으로 정렬하는 방법이었고 GridLayout도 작업을 수행합니다. –

+0

이 모양과 느낌으로 괜찮습니까? – Braj

관련 문제