프로그램이 실행되는 동안 여러 색상으로 메시지를 표시하도록 JTextArea를 만들었습니다. NetBeans 8.0을 사용하고 코드를 작성하기 전에 "log"라는 jFrame에 JTextArea를 추가했습니다.코드가 JTextArea에서 텍스트 표시를 거부합니다.
/*time1 gets the current system time and it works perfectly, no errors there*/
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Thread t1;
FTPClient cli=new FTPClient();
FTPClientConfig conf=new FTPClientConfig();
boolean err=false;
try{
String ServAddress="195.191.24.202";
int reply;
TimeNow time1=new TimeNow();
apppane(log,time1.whatsthetime()+": Connecting to "+ServAddress+"\n",Color.RED);
System.out.println(time1.whatsthetime()+": Connecting to "+ServAddress+"\n");
cli.connect(ServAddress);
cli.configure(conf);
TimeNow time2=new TimeNow();
apppane(log,time2.whatsthetime()+": Connected to "+ServAddress,Color.BLUE);
System.out.println(time2.whatsthetime()+": Connected to "+ServAddress+"\n");
System.out.println(time2.whatsthetime()+": "+cli.getReplyString());
reply=cli.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
cli.disconnect();
TimeNow time3=new TimeNow();
apppane(log,time3.whatsthetime()+": Connection rejected. \n", Color.RED);
System.out.println(time3.whatsthetime()+": Connectiion failed \n");
}
log.setText(ServAddress);
}
catch (Exception e){
e.printStackTrace();
}
}
그러나이 텍스트가 JTextPane의에 나타납니다 : 나는 색상의 텍스트를 표시하는 코드를 작성,
private void apppane(JTextPane log, String msg, Color c)
{
/*This allows multi-colour inside the logging pane*/
StyleContext sc = StyleContext.getDefaultStyleContext();
AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);
aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");
aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED);
int len = log.getDocument().getLength();
log.setCaretPosition(len);
log.setCharacterAttributes(aset, false);
log.replaceSelection(msg);
}
다음 :
첫째, 나는 apppane
라는 클래스를 정의했다. 도와주세요!
살인자 : 내가 아닌 경우 새 JTextPane을 정의합니까?
UPDATE 1 : 여기 넷빈즈에 의해 생성 된 스윙 GUI 코드입니다 :
private void initComponents() {
dochello = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
log = new javax.swing.JTextPane();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("MayvilFTP");
getContentPane().setLayout(null);
dochello.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
dochello.setText("Welcome, Dr. ");
getContentPane().add(dochello);
dochello.setBounds(10, 30, 350, 30);
jButton1.setText("Connect");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1);
jButton1.setBounds(370, 30, 110, 23);
log.setEditable(false);
log.setOpaque(false);
jScrollPane2.setViewportView(log);
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(10, 230, 480, 110);
pack();
}// </editor-fold>
예외가 발생 했습니까? –
@SanjayManohar 없음. 문제가 더욱 커집니다. –
@SanjayManohar Netbeans이 "log"라는 JTextPane에 혼란 스럽다고 생각합니까? 내가 그렇지 않을 때 새로운 JTextPane을 정의한다고 생각합니까? –