2013-10-18 2 views
1

자바가 녹슬어서 제발 참아주십시오. 내 GUI 클래스에서 JList를 반환하는 다른 클래스 파일을 호출하는 메서드가 있습니다. JList의에서 텍스트를 얻고있다 갖는 문제 메신저, 당신은JScrollPane 내부의 JPanel 내부에 JLabels를 래핑

package com.example.tests; 

import java.awt.Color; 
import java.awt.Container; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import com.example.tests.IJ_runTestAFJ; 
public class GUI_v2 extends JFrame 
{ 
private static final long serialVersionUID = 1L; 
IJ_CommonSetup setup = new IJ_CommonSetup(); 


Container c; 
JPanel panel; 
JScrollPane userScrollPane, errorScrollPane, sysScrollPane; 
JTextArea tfUserError, tfSysError; 

private JButton resetButton; 
public JList<String> errorList; 


GUI_v2() 
{ 
    resetButton = new JButton(); 
    resetButton.setText("Click to populate TextArea"); 
    resetButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try { 
       //test.runTest_Login(stUserName,stPwd); 
       updatePanel(); 
      } catch (Exception e1) { 
       e1.printStackTrace(); 
      } 
     } 
    }); 

    panel = new JPanel(); 

    tfSysError = new JTextArea(10,33); 
    tfSysError.setLineWrap(true); 
    tfSysError.setEditable(false); 
    tfSysError.setWrapStyleWord(false); 
    sysScrollPane = new JScrollPane(tfSysError); 
    sysScrollPane.setBorder(BorderFactory.createLineBorder(Color.black)); 

    panel.add(sysScrollPane); 
    panel.add(resetButton); 

    c = getContentPane(); 
    c.add(panel); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setVisible(true); 
    setSize(400,250); //width, height 
    setLocation(600,0); 
    setResizable(false); 
    validate();  
}//close GUI 

/** 
* @param args the command line arguments 
*/ 
public static void main(String args[]) { 
    /* Create and display the form */ 
    EventQueue.invokeLater(new Runnable() { 

     public void run() { 
      new GUI_v2().setVisible(true); 
     } 
    }); 
} 

public void updatePanel() 
{  
    errorList = new JList<String>(); 
    errorList = setup.getErrorJList(); 
    tfSysError.append(errorList.getComponent(1).toString()); 
    validate(); 
} 


}// end on class 

아래 IJ_CommonSetup.java

package com.example.tests; 

import javax.swing.JLabel; 
import javax.swing.JList; 
public class IJ_CommonSetup{ 
/** 
* 
*/ 

public static String stError = new String(); 
public static JList<String> stJListError = new JList<String>(); 


public JList<String> getErrorJList(){ 
    String error1 = new String("TestTestTestTestTestTestTestTestTestTestTestTestTestTest "); 
    String error2 = new String("ApplesApplesApplesApplesApplesApplesApplesApplesApplesApples "); 
    JLabel newError1 = new JLabel(); 
    newError1.setText(error1); 
    JLabel newError2 = new JLabel(error2); 
    stJListError.add(newError1); 
    stJListError.add(newError2); 
      return stJListError; 
} 
} 

+2

1) 왜 'JList'를 사용하지 않습니까? 2) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 그것은 50 개 이상의 LOC (300 개 이상의 LOC와 반대)를 넘지 않아야합니다. 3)'label.setPreferredSize (..'자바 스윙에서 set (Preferred | Maximum | Minimum) size 메소드를 사용하지 말아야 할 것인가?를 보라.] (http://stackoverflow.com/q/7229226/418556) (예.) –

+0

@AndrewThompson 건배 남자, 제안에 감사드립니다. – CoffeeTime

답변

5

메신저 몇 가지 문제가 점점을 갖는 출력의 예를 볼 수 있습니다 Scrollpane 내부에 인 패널 내부를 감싸는 레이블. 현재 레이블에 추가 된 문자열이 길면 괜찮 으면 왼쪽으로 정렬되지만 레이블 끝에는 레이블이 문자열의 끝 부분을 잘라냅니다. JLabel들 (JScrollPane에서) JPanel 첨가 대신 JTextArea

위한 JScrollPane

  • setEditable(false)

    • 사용 JTextArea(int, int) JLabel의에 D

    1

    일반 텍스트 포장하지 마십시오. HTML을 사용해 볼 수 있습니다 :

    String text = "<html>long text here</html"; 
    
    관련 문제