2014-11-13 6 views
0

사용자가 20보다 큰 숫자를 입력하면 스크롤 막대가 텍스트에 있어야하므로 텍스트 영역에 스크롤 막대를 추가하려고합니다. 기본적으로 사용자가 곱셈 테이블을 원하는 숫자를 입력하고 숫자를 입력 할 수있는 응용 프로그램을 만들려고합니다. 예를 들어 최대 20 개의 테이블 (예 : 12 X 20 = 240)이 표시됩니다. 나머지는 숨겨져 있습니다.Java 스크롤 막대

public class LayoutM extends JFrame implements ActionListener { 

    private JTextField num1; 
    private JTextField num2; 
    private JTextArea answer; 
    private JButton go; 
    private int num11; 
    private int num22; 



    public LayoutM(){ 

     super("Multiplication"); 
     setLayout(new FlowLayout()); 

     Dimension numDim = new Dimension(60,20); 
     Dimension ansDim = new Dimension(200,300); 
     Dimension goDim = new Dimension(60,20); 

     num1 = new JTextField("Number"); 
     num1.setPreferredSize(numDim); 

     num2 = new JTextField("Upto"); 
     num2.setPreferredSize(numDim); 

     go = new JButton("GO"); 
     num2.setPreferredSize(goDim); 

     answer = new JTextArea(20,20); 
     answer.setPreferredSize(ansDim); 
     answer.setEditable(false); 



     add(num1, BorderLayout.CENTER); 
     add(num2,BorderLayout.CENTER); 
     add(go,BorderLayout.CENTER); 
     add(answer,BorderLayout.SOUTH); 


     go.addActionListener(this); 

    } 

    public static void main(String[] args){ 
     LayoutM ob = new LayoutM(); 
     ob.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     ob.setVisible(true); 
     ob.setSize(300,400); 
     ob.setResizable(false); 
     ob.setLocationRelativeTo(null); 
    } 


    public void actionPerformed(ActionEvent event){ 
     try{ 

     answer.setText(" "); 
     num11 = Integer.parseInt(num1.getText()); 
     num22 = Integer.parseInt(num2.getText()); 

     for(int count = 1; count < num22+1;count++){ 
      answer.append(num11+ " X "+ count+" = " + num11*count+" \n"); 

     } 
    }catch(Exception e){ 
     JOptionPane.showMessageDialog(null, "No decimals allowed"); 
    } 
    } 

} 

답변

1

당신은 당신의 LayoutM로 스크롤 창을 새로운 JScrollPane 객체로 answer 객체를 넣어 add한다.

그래서, 당신은 추가해야합니다 당신의 분야에서 :

private JScrollPane scroll; 

을 대신

add(answer,BorderLayout.SOUTH); 

을 사용하는 당신은 당신의 actionPerformed() 방법에

add(scroll,BorderLayout.SOUTH); 

그리고를 사용해야합니다, 당신은 변경해야 사용자로부터받은 번호에 따른 행 수. for 루프 앞에 넣으십시오.

 if (num22 > 20) { 
     answer.setRows(num22); 
    } else { 
     answer.setRows(20); 
    } 
+0

답변 = 새 JTextArea (20,20); \t \t answer.setPreferredSize (ansDim); \t \t answer.setEditable (false); \t \t scroll = 새 JScrollPane (응답); \t \t \t \t \t \t \t 추가 (NUM1, BorderLayout.CENTER); \t \t add (num2, BorderLayout.CENTER); \t \t add (go, BorderLayout.CENTER); \t \t add (answer, BorderLayout.SOUTH); \t \t add (scroll); –

+0

아니요, '스크롤'을 프레임에 추가하고 '응답'을 추가하지 마십시오. 그리고 코멘트는 코드를위한 좋은 장소가 아닙니다. 원본 답변을 편집하고 "이 작업을 시도했는데 (코드) 작동하지 않습니다"라고 추가 한 다음 "내 질문을 편집했습니다. 잠시만 기다려주세요"라는 주석을 쓸 수 있습니다. – RealSkeptic

+0

죄송합니다. 첫 번째 의견에서 제안한대로 코드 줄을 도울 수 있습니까? 부디! –