2017-12-07 4 views
1

다른 버튼 (자바)에서 버튼을 배치 :어떻게 요청을받은

  1. 이 때
  2. 은 무엇 일 (JFrame과) 프레임에서 다른 버튼에서 버튼을 배치 할 수 있었다면 그것들을 시도해보십시오. (그들이 테스트 해보고 무슨 일이 일어날지를 묻습니다.)

나는 그것을 시도했지만 어떻게해야할지 모르겠다. 내가 성공한 유일한 것은 BorderLayout (예를 들어 두 개의 버튼이 "중앙"위치에있는 동일한 위치에 두 개의 버튼을 넣는 것이었지만 버튼 하나의 버튼과 같은 것이라고 생각하지 않습니다.)

누군가가 나 그것을 수행하는 방법이 좋을 것 그것을 할 수있는 경우 알았다면

!

+0

당신은 할 수 없습니다 1이라고 대답하지 않습니까? –

+0

나는 그것을 추측한다. 그러나 만일 내가 시험해 보면 아직도 일어날 것을 설명해야한다!! (그리고 어떻게 해야할지 모르겠다.) –

+0

클릭 가능한 영역을 다른 영역 내에서 그릴 수는 있지만 JButton은 레이아웃 관리자의 일부만 사용하므로 사용자의 대답은이 버튼이 어떻게 그것과 상호 작용할뿐만 아니라 특정 버튼을 클릭하면 둘 다 클릭합니까? –

답변

4

예, 하나 개의 버튼은 다른 버튼에 추가 할 수 있습니다. 내가 두 번째 질문을 조사하기 위해 당신을 떠날 것이다.

enter image description here

import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.EmptyBorder; 
import java.net.*; 

public class ButtonQuestion { 

    private JComponent ui = null; 
    JButton button1; 
    JButton button2; 

    ButtonQuestion() { 
     try { 
      initUI(); 
     } catch (MalformedURLException ex) { 
      ex.printStackTrace(); 
     } 
    } 

    public void initUI() throws MalformedURLException { 
     if (ui!=null) return; 

     ui = new JPanel(new BorderLayout(4,4)); 
     ui.setBorder(new EmptyBorder(4,4,4,4)); 

     button1 = new JButton("button 1", new ImageIcon(
       new URL("https://i.stack.imgur.com/in9g1.png"))); 
     button2 = new JButton("button 2", new ImageIcon(
       new URL("https://i.stack.imgur.com/wCF8S.png"))); 
     ui.add(button1); 
     // Yep. One button can indeed be added to another.. 
     button1.add(button2); 
    } 

    public JComponent getUI() { 
     return ui; 
    } 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (Exception useDefault) { 
       } 
       ButtonQuestion o = new ButtonQuestion(); 

       JFrame f = new JFrame(o.getClass().getSimpleName()); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       f.setLocationByPlatform(true); 

       f.setContentPane(o.getUI()); 
       f.pack(); 
       f.setMinimumSize(f.getSize()); 

       f.setVisible(true); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
+1

대단히 감사합니다! –

+0

좋은 답변입니다! 질문이 사소하다고 생각할지라도 사람들이 배우는 것을 돕는 것은 좋습니다. –

관련 문제