【发布时间】:2014-12-18 08:59:24
【问题描述】:
关于摇摆中从右到左的组件方向,我有一个奇怪的问题 - JLabel 和 JTextField 在相同值的显示方面存在不一致。
附件是一个演示问题的SSCCE。
是不是我做错了什么?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.ComponentOrientation;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class GuiTest2 extends JFrame
{
public GuiTest2()
{
super( "Test" );
JLabel testLabel = new JLabel();
testLabel.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
testLabel.setText( "ca 12 בדיקה" );
testLabel.setBorder( new LineBorder( Color.BLACK ) );
JTextField testTextField = new JTextField();
testTextField.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
testTextField.setText( "ca 12 בדיקה" );
testTextField.setBorder( new LineBorder( Color.BLACK ) );
JPanel panel = new JPanel( new BorderLayout( 5, 5) );
panel.setBorder( new EmptyBorder( 10, 10, 10, 10 ) );
panel.add( testLabel, BorderLayout.NORTH );
panel.add( testTextField, BorderLayout.SOUTH );
setContentPane( panel );
pack();
setLocationRelativeTo( null );
setVisible( true );
}
public static void main( String[] args )
{
SwingUtilities.invokeLater( new Runnable()
{
@Override
public void run()
{
new GuiTest2();
}
} );
}
}
这是上面代码的截图:
结果字符串不应该相同吗?
没有setComponentOrientation 我有以下( 相同):
【问题讨论】:
-
根据 Javadocs:ComponentOrientation 类封装了语言敏感的方向,用于对组件或文本的元素进行排序。这种奇怪行为背后的原因可能是您用于显示值的语言。
-
它非常适合纯英文单词。
-
这两个组件使用相同的语言但它们的呈现方式不同,这似乎很奇怪
标签: java swing right-to-left