你可以用绝对定位来试试,并对JLabel这类component
指定大小。代码相对于其他布局可能麻烦一点,但是
比较灵活。

解决方案 »

  1.   

    我需要的不是把JLabel显示在面板上,而是放在一个JTextPane中,如果JTextPane没有布局管理的话,不就每一个输入的文本都要受动的给位置,晕死。
      

  2.   

    JTextPane没有布局管理跟JPanel等都是一样。
    如果想精确,那就用绝对定位.
      

  3.   

    JTextPanel有没有布局管理我不太清楚,JPanel肯定有布局管理! FlowLayout是JPanel默认的布局管理器,我做的Swing界面中JTextPane是可以根据JFrame放大缩小,如果采用绝对定位,在放大缩小时候不就乱了?
      

  4.   

    JAVA就是在界面设计上,比较头疼,而且设计出来的不是太好看,有没有哪位大虾知道,用其他的界面开发工具开发界面,比如用VB,VC,然后,JAVA在怎么调用用VB,VC开发的界面???
      

  5.   

    有一个取巧的办法,你可以把文字的样式设成下标,用14号字(看起来就是12号的大小了),这样文本的高度就和组件差不多了,要显示图片的话就new JLabel(Icon)吧,高度问题就解决了:import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.text.*;
    import java.io.*;public class Ttt {
      JFrame frame;
      JTextPane textPane;
      File file;
      Icon image;  public Ttt(){
        frame = new JFrame("JTextPane");
        textPane = new JTextPane();
        //file = new File("./classes/test/icon.gif"); //可加入一个小图标试验
        //image = new ImageIcon(file.getAbsoluteFile().toString());
        JLabel ll = new JLabel("标签");
        StyledDocument doc = textPane.getStyledDocument();
        try {
          SimpleAttributeSet attrSet = new SimpleAttributeSet(); //文本所采用的样式
          StyleConstants.setForeground(attrSet, new Color(255, 0, 0)); //文本颜色
          StyleConstants.setFontSize(attrSet, 14); //文本字体Size
          StyleConstants.setSubscript(attrSet, true); //将文本设成下标
          doc.insertString(doc.getLength(), "我们都有一个家", attrSet); //插入有样式的文本
          ll.setFont(new Font("宋体", 0, 12));
          textPane.setCaretPosition(doc.getLength()); //将光标位置设置到最后
          textPane.insertComponent(ll); //插入标签
          //textPane.setCaretPosition(doc.getLength());//将光标位置设置到最后
          //textPane.insertIcon(image); //插入图标
          doc.insertString(doc.getLength(), "名字叫中国", attrSet); //插入有样式的文本
        }
        catch (BadLocationException ex) {
        }
        frame.getContentPane().add(textPane, BorderLayout.CENTER);
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
          }});
        frame.setSize(200,300);
        frame.setVisible(true);
      }  public static void main(String[] args) {
        new Ttt();
      }
    }