2010-03-11 2 views
0

JRadioButtons 세트가 있고 각 옆에 작은 'i'이미지 옆에있는 버튼을 클릭하면 라디오 버튼 옆에있는 텍스트에 대한 정보가 포함 된 새 창이 열립니다. 라디오 버튼 옆에있는 작은 'i'레이블을 정렬하는 데 가장 좋은 구성 요소는 무엇입니까?정보 링크가있는 JRadio 버튼

답변

1

스타일을 사용하여이를 수행 할 수있는 몇 가지 가능성이 있습니다.

가장 간단한 방법은 분명히 라디오 버튼 옆에 "i"이미지가있는 JButton을 넣는 것입니다. 올바른 레이아웃 관리자 (물론 GridBagLayout)를 사용하면 두 가지를 쉽게 정렬 할 수 있습니다.

라디오 버튼에 클라이언트 속성을 설정 한 다음 라디오 버튼 렌더러 (look'n'feel)에서이 클라이언트 속성을 사용하여 버튼 옆에 "i"아이콘을 표시 할 수 있습니다. 유감스럽게도, 필요할 때 이미지를 포함하도록 라디오 버튼 범위를 올바르게 관리해야하므로 (LnF에서도 가능하지만 쉽게 찾을 수는 없습니다), 좀 더 어려운 구현 방법입니다.

1

이미지를 javax.swing.ImageIcon으로 생성자 JRadioButton에 전달합니다. 그런 다음 버튼을 마우스로 클릭하고 마우스 포인터의 좌표가 이미지의 경계 내에 있는지 확인합니다.

0

문제의 'i'부분에 대한 구성 요소 유형에 가장 유용한 JLabel과 같은 것을 찾습니다. 모든 구성 요소와 같은 JLabel에는 마우스 리스너가 추가 될 수 있으며 사용자가 클릭하면 무언가를 트리거하는 데 필요한 액세스 권한이 있습니다.

아래 코드에서 간단한 FlowLayout을 사용 했으므로 GridBayLayout을 사용하지 않을 경우 수평 맞춤을 제공 할 수 있습니다. 궁극적으로 레이아웃을 설정하는 방법에 따라 달라 지지만 이러한 상황에서는 FlowLayout과 같은 기능이 도움이됩니다.

public class Main { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      public void run() { 
       final JFrame f = new JFrame(); 
       f.setLayout(new BorderLayout()); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       JPanel p = new JPanel(new FlowLayout()); 
       JLabel l = new JLabel(new ImageIcon(Main.class.getResource("info.png"))); 
       l.addMouseListener(new MouseAdapter(){ 
        @Override 
        public void mouseReleased(MouseEvent e) { 
         JOptionPane.showMessageDialog(f, "Clicked"); 
        } 
       }); 
       p.add(new JRadioButton()); 
       p.add(l); 

       f.add(p, BorderLayout.CENTER); 
       f.pack(); 
       f.setLocationRelativeTo(null); 
       f.setVisible(true); 
      } 
     }); 
    } 
} 
: 예를 들어 다음 코드에서