高手,您好:
    我是一名学习软件工程的学生,我想开发一个:
    让我的系统中的用户,能够向“系统投诉”系统的使用后用户体验,并且能够进行“投诉为自己服务的系统员工的工作满意度”的面板,添加到我的一个CS结构的作品中去.
    我的代码如下:
    (第一套)
    package c_port_packageDoctor;import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.text.View;public class CustomerComplainUI extends JFrame{ /**
 * 
 */
private static final long serialVersionUID = 1L;
JPanel jp = new JPanel();
Font fnt1 = new Font("黑体",0,18);
Font fnt2 = new Font("黑体",0,18);
Font fnt3 = new Font("黑体",0,18);
JTextArea jta = new JTextArea();
JLabel jL0 = new JLabel("请将您的投诉信,发至这个信箱:“[email protected]”,并且遵守下文中的3个条件。");
JLabel jL1 = new JLabel(""); public static void main(String[] args){
new CustomerComplainUI();
}

public CustomerComplainUI() {
// TODO Auto-generated constructor stub
jp.setLayout(new BorderLayout());
int maxWidth = 100; //限制的宽度
JLabel lbl = new JLabel("<html>请将您的投诉信,发至这个信箱:“[email protected]”,并且遵守下文中的3个条件。/n1.请您在邮件中写上系统员工的工号,和,2.您在结单时所得到的单号,并且,3.邮件的长度,需要达到800个字以上的程度,经过系统的验证,如果您提供的信息属实,系统将把本员工的系统积分,减除一分。如果本系统员工的工作对您造成了损失,本系统,将会把该员工的本单报酬,扣除。如果本系统的员工经查对您的经济,物质造成了损害并且责任在本系统的员工这一方的话。本系统,会包赔您的损失。</html>");
javax.swing.text.View v = javax.swing.plaf.basic.BasicHTML.createHTMLView(lbl, lbl.getText());
v.setSize(maxWidth, Integer.MAX_VALUE);
int h = (int) v.getMinimumSpan(View.Y_AXIS); //这是取得的高度
lbl.setPreferredSize(new Dimension(maxWidth, h));
jp.add(lbl,BorderLayout.NORTH);
this.add(jp);
this.setBounds(400,300,400,300);
this.setVisible(true);

}}
    点击“运行”后,得到的运行后效果如下:
        我的“第二次尝试”的代码如下:
    package c_port_packageDoctor;import java.awt.FontMetrics;import javax.swing.JLabel;public class CustomerCompliainUI {
    String longString = "a very very very very very very very very long string";
    StringBuilder builder = new StringBuilder("<html>");
    char[] chars = longString.toCharArray();
    FontMetrics fontMetrics = jLabel.getFontMetrics(jLabel.getFont());
    for (int beginIndex = 0, limit = 1;
     limit++;
     ){
     System.out.println(beginIndex + " " + limit + " " + (beginIndex + limit));
     if (fontMetrics.charsWidth(chars, beginIndex, limit) < jLabel.getWidth()) {
     if (beginIndex + limit < chars.length) {
     continue;
     }
     builder.append(chars, beginIndex, limit);
     break;
     }
     builder.append(chars, beginIndex, limit - 1).append("<br/>");
     beginIndex <SPAN style="COLOR: #ff0000">+=</SPAN> limit - 1;
     limit = 1;
     }
    builder.append("</html>");
    jLabel1.setText(builder.toString()); 
}
    得到的运行后的效果如下:
    
    希望高手点拨:
    在我的上述文字的面向用户的输出背景开发需求下,我应该如何做,能够解决:
    1.采用JLabel标签作为显示上述文本的载体,能够进行:
          1>.将上述文本进行“自动换行”?
          2>.将上述文本进行“指定位置换行”?
    2.采用JTextArea作为显示上述文本的载体,能够进行:
          1>.将上述文本进行“指定位置换行”?
    的开发需求的实现..?
    希望高手能够将您的讲解,落实到代码行上....
    诚挚地等待高手的点拨!!
    一百分奉上!!
                                                              一位日日夜夜向着理想奔跑的筑梦者
                                                              2013年8月20日中午13点41分SwingJava SEJava调试Swing控件控制

解决方案 »

  1.   

    JFrame jf = new JFrame();
    jf.pack();
    jf.setSize(200, 200);

    JPanel jp = new JPanel();
    jf.add(jp);

    JTextArea jTextArea = new JTextArea("A very very  very very  " +
    "very very  very very  very very  very very  " +
    "very very  very very  very very  very very  " +
    "very very long string");
    jTextArea.setSize(180, 180);
    jTextArea.setBackground(null);//背景透明
    jTextArea.setEditable(false);//不可编辑
    jTextArea.setLineWrap(true);//自动换行
    jTextArea.setWrapStyleWord(true);//根据单词换行
    jp.add(jTextArea);

    jf.setVisible(true);
    jf.setDefaultCloseOperation(3);
    指定位置换行的话,试试看在指定位置插入换行符能行不
      

  2.   

    你说的这些需求都有对应的api接口了,不需要特别大的逻辑实现。好好看卡api。
      

  3.   

    e274794140哥,谢谢您一直以来对我的帮助!!
    You Are My BigBrother!!
    fangmingshijie小妹,您对我的帮助,也是一直让我念念不忘的..
    但是,希望您下回能够将您的回答,再细化一些...
    wangyongc,你的答案,我不做评论。
    谢谢上面三位高手的点拨!!
    谢谢CSDN的平台!!
    CSDN!!加油!!!!