2014-03-29 2 views
-2
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 
import java.awt.BorderLayout; 

public class Fram { 
    public static void main(String[] args) { 
     JTextArea map; 
     JButton btn; 
     map= new JTextArea(); 
     btn= new JButton("hello"); 
     JFrame frame= new JFrame("jarvis"); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(600,600); 
     frame.setLayout(new BorderLayout()); 
     frame.add(map, BorderLayout.CENTER); 
     frame.add(btn, BorderLayout.SOUTH); 
    } 
} 

이 코드를 사용하여 텍스트 영역을 얻지 만 텍스트 영역이나 단추가없는 프레임 만 가져옵니다.자바 스윙 구성 요소를 얻을 수 없습니다.

+1

그것도 컴파일 안입니다 텍스트 영역과 버튼. 편집 후 다시 컴파일하는 것을 잊었을 수 있습니까? – Boann

+0

그게 그냥 인쇄를 놓치지 만, 여전히 빈 프레임을 받고있다. – user2839878

+0

그것은 나를 위해 일하고있다. – Ashish

답변

0

귀하의 코드뿐만 아니라 나에게 잘 작동 :

다음은 수정 된 코드입니다. 당신은 you can not see swing component를 언급했습니다. 나는 텍스트 영역이 경계 영역의 전체 공간을 점유하고 있기 때문에 텍스트 영역이 예상대로 보이지 않기 때문에 텍스트 영역이 있는지 식별 할 수 없기 때문에 생각합니다. 그래서 행동을 개선하기 위해 코드에 JPanel과 JscrollPane을 추가했습니다. 마지막 메서드로 setVisible을 호출하고 Gilbert가 언급 한 것처럼 SwingUtilities invokeLater를 호출하여 모든 Swing 응용 프로그램을 시작해야합니다.

package stackOverFlow; 

import java.awt.BorderLayout; 

public class Frame implements Runnable { 
    public static void main(final String[] args) { 
     SwingUtilities.invokeLater(new Frame()); 
    } 

    @Override 
    public void run() { 
     JTextArea map; 
     JButton btn; 
     JLabel lbl; 
     map = new JTextArea(10, 50); 
     final JScrollPane scrollPanel = new JScrollPane(map); 
     btn = new JButton("hello"); 
     lbl = new JLabel("Text Area: "); 
     final JPanel actionPanel = new JPanel(
       new FlowLayout(FlowLayout.LEADING)); 
     actionPanel.add(lbl); 
     actionPanel.add(scrollPanel); 
     final JFrame frame = new JFrame("jarvis"); 
     frame.setLayout(new BorderLayout()); 
     frame.add(actionPanel, BorderLayout.CENTER); 
     frame.add(btn, BorderLayout.SOUTH); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(600, 600); 
     frame.setVisible(true); 
    } 
} 

프로그램의 출력은 Button`이`JButton`해야하지만, 당신이 것을 해결하는 경우, 그것은 모두 프레임을 보여 않는`로,

enter image description here

+0

고마워 친구 야. – user2839878

+0

안녕하세요. – Ashish

0

단추의 크기를 설정하지 않았습니다. 가운데 또는 남쪽에있을 수 있지만 크기를 선언해야합니다. 그래서 나는 당신을 선호한다 btn.setBounds(0,0,100,20) 만약 당신이 BorderLayour.CENTER를 삭제하고 경계를 설정하면 200,280을 쓸 수 없다.

1

당신의 코드는 나를 위해 일한다. 내가 빠뜨린 몇 가지 사항을 추가했습니다.

먼저 이어야하며 SwingUtilities invokeLater를 호출하여 모든 Swing 응용 프로그램을 시작해야합니다. 이렇게하면 Swing 구성 요소가 Event Dispatch thread (EDT)에서 정의되고 실행됩니다.

두 번째로 프레임 setVisible 메서드를 마지막으로 이동했습니다. JFrame을 보이기 전에 완전히 설정해야합니다.

import java.awt.BorderLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 
import javax.swing.SwingUtilities; 

public class Fram implements Runnable { 

    @Override 
    public void run() { 
     JTextArea map; 
     JButton btn; 
     map = new JTextArea(); 
     btn = new JButton("hello"); 
     JFrame frame = new JFrame("jarvis"); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(600, 600); 
     frame.setLayout(new BorderLayout()); 
     frame.add(map, BorderLayout.CENTER); 
     frame.add(btn, BorderLayout.SOUTH); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Fram()); 
    } 


} 
+0

누군가가 결국 가장 분명한 자리에 앉는 데 48 분이 걸린다. <흔들리는 머리> +1 –

+0

@peeskillet 나는 그것을 발견했다. 나는 그것이 중요하지 않다는 것을 알고 있기 때문에 그것을 지적하지 않았다. – Boann

+0

@peeskillet : 죄송합니다. 방금이 질문에 답했습니다. :-) 나는 당신의 대답을 존경하고 upvoted했습니다. –

관련 문제