当添加更多字符时,我需要更改JTextField对象增长的方向。目前,当我向它添加更多内容时,它会从左向右增长,但我需要从右到左增加JTextField的边界。 对于例如当我向这个JTextField添加“StackOverflow”时,o / p是,
<empty space>StackOverflow
但我想,
StackOverflow<empty space>
你们能帮助我吗?我试过setHorizontalAlignment。但它不起作用。 谢谢你的帮助。
编辑:添加了SSCCE以获得更好的解释。
import java.awt.Container; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField;
public class JTextFieldExample { public static void addComponentsToPane(容器窗格){ pane.setLayout(new BoxLayout(pane,BoxLayout.Y_AXIS));
JTextField transitionEditorJTextField = new JTextField("StackOverFlow");
pane.add(transitionEditorJTextField);
System.out.println("If I add text to JTextFiled notice that it grows towards Right - which is normal. "
+ "But I want it to grow towards left.");
JButton button = new JButton("Button.I.Am");
pane.add(button);
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("BoxLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Set up the content pane.
addComponentsToPane(frame.getContentPane());
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
答案 0 :(得分:0)
我不确定我理解你的问题。通常,您使用以下代码创建JTextField:
JTextField textField = new JTextField(10);
这为文本字段提供了一个固定的首选大小,这取决于所使用的布局管理器。
听起来你正在做类似的事情:
JTextField textField = new JTextField();
在这种情况下,我不认为文本字段有大小。你甚至可以添加角色吗?那么在这种情况下,解决方案可能是在文本字段中添加ComponentListener并跟踪原始大小。每次更改大小时,您都会根据大小的不同更改文本字段的位置。根据布局管理器的不同,这可能也可能不起作用。
如果您需要更多帮助,请发布显示问题的SSCCE。
答案 1 :(得分:0)
textField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);