import java.awt.*;
import javax.swing.*;
public class TestField{
public static void main(String args[]){
MyFrame mFrame = new MyFrame();
mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mFrame.setVisible(true);
}
}
class MyFrame extends JFrame{
public MyFrame(){
setTitle("TextField");
setSize(400,300);
setLocation(550,350);
MyPanel myPanel = new MyPanel();
getContentPane().add(myPanel);
}
}
class MyPanel extends JPanel{
public MyPanel(){
JLabel label = new JLabel("<html>Hello</html>",SwingConstants.LEFT);
//JLabel label = new JLabel("<html>Hello</html>",SwingConstants.RIGHT);
                   这个标签组件一开始怎么在中间?设置左边和右边都无用,请问对齐是啥意思?
add(label);
}
}

解决方案 »

  1.   

    JPanel默认是FlowLayout,默认是左对齐,JLabel那个对齐是指里面的文本和图标的对齐方式,和它自身相对于容器的对齐方式无关,要看容器的布局管理器
      

  2.   

    上面说错了,JPanel默认是FlowLayout,但默认不是左对齐,是居中。楼主代码这么改一下就行了:import java.awt.*;
    import javax.swing.*;
    public class TestField{
    public static void main(String args[]){
    MyFrame mFrame = new MyFrame();
    mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mFrame.setVisible(true);
    }
    }
    class MyFrame extends JFrame{
    public MyFrame(){
    setTitle("TextField");
    setSize(400,300);
    setLocation(550,350);
    MyPanel myPanel = new MyPanel();
    getContentPane().add(myPanel);
    }
    }
    class MyPanel extends JPanel{
    public MyPanel(){
    JLabel label = new JLabel("<html>Hello</html>",SwingConstants.LEFT);
    FlowLayout layout = (FlowLayout)getLayout();
    layout.setAlignment(FlowLayout.LEFT);
    add(label);
    }
    }
    楼主要搞清楚,组件的位置并不是由它自己决定的,而是由它的容器、它的容器的布局管理器决定的,这是原则,设置组件的对齐方式只能影响它内部的子组件,而不能影响它本身在容器里面的位置。
      

  3.   

    建议楼主好好的学习一下Swing的布局管理器,这是基础,对理解Swing的布局方式很有帮助
      

  4.   

    哦,对的,顺便把标签内容改一下,
    JLabel label = new JLabel("<html>Hello</br>World</html>");
    怎么文本没换行?
      

  5.   

    "<html><body>Hello<br />World</body></html>"第一,楼主<br />写成了</br>。第二,HTML代码中间别忘了加<body></body>。