如何设置Java里面textfield的对齐方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置Java里面textfield的对齐方式相关的知识,希望对你有一定的参考价值。
在awt中,TextField没有设置对齐方式的方法。
在swing中,JTextField有一个setHorizontalAlignment()方法可以设置对齐方式。
例如:
/*JTextField.LEFT 左对齐
JTextField.CENTER 居中对齐
JTextField.RIGHT 右对齐
JTextField.LEADING
JTextField.TRAILING
*/
JTextField Txt = new JTextField();
Txt.setHorizontalAlignment(JTextField.LEFT); 参考技术A textfield.setHorizontalAlignment(SwingConstants.LEFT); //指定内容的对齐方式
SwingConstants 通常用于在屏幕上定位或定向组件的常量的集合。
LEADING
标识使用从左到右和从右到左的语言的文本开始边。
TRAILING
标识使用从左到右和从右到左的语言的文本结束边。
LEFT
用于指定框左侧位置的框方向常量。
RIGHT
用于指定框右侧位置的框方向常量。
CENTER
某区域的中心位置。
如何使用Swiftui创建用户表单
我想创建一个表单,其中所有文本字段都需要从相同的对齐方式开始,就像下面的图片中那样,它不是从相同的对齐方式开始。名,姓和电话号码的所有textField均未正确对齐。
VStack(){
HStack(){
Text("First Name")
TextField("First name", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack(){
Text("Last Name")
TextField("Last Name", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack(){
Text("Phone number")
TextField("Phone number", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
Spacer()
}.padding(10)
答案
您可以使用GeometryReader
访问设备尺寸,并使用frame
设置Text
的固定宽度。例如:
GeometryReader { geometry in
VStack(spacing: 10) {
HStack {
Text("First Name").frame(width: geometry.size.width / 3)
TextField("First name", text: self.$name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack {
Text("Last Name").frame(width: geometry.size.width / 3)
TextField("Last Name", text: self.$name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack{
Text("Phone number").frame(width: geometry.size.width / 3)
TextField("Phone number", text: self.$name).textFieldStyle(RoundedBorderTextFieldStyle())
}
Spacer()
}.padding(10)
}
另一答案
这将对齐您的TextField:
VStack {
HStack {
HStack {
Text("First Name")
Spacer()
}
TextField("First name", text: $name)
.textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack {
HStack {
Text("Last Name")
Spacer()
}
TextField("Last Name", text: $name)
.textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack {
HStack {
Text("Phone number")
Spacer()
}
TextField("Phone number", text: $name)
.textFieldStyle(RoundedBorderTextFieldStyle())
}
Spacer()
} .padding(10)
另一答案
VStack{
HStack(){
Text("First Name").frame(width: 120, alignment: .leading)
TextField("First name", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack(){
Text("Last Name").frame(width: 120, alignment: .leading)
TextField("Last Name", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack{
Text("Phone number").frame(width: 120, alignment: .leading)
TextField("Phone number", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
Spacer()
}.padding(10)
或更灵活的解决方案
struct TestView: View {
@State var name = ""
@State var width: CGFloat = 0
struct Label: ViewModifier {
@Binding var width: CGFloat
func getWidth(content: Content, proxy: GeometryProxy) -> some View {
if proxy.size.width > width {
RunLoop.main.perform {
self.width = proxy.size.width
}
}
return content
}
func body(content: Content) -> some View {
content.overlay(GeometryReader { proxy in
self.getWidth(content: content, proxy: proxy)
}).frame(minWidth: self.width, alignment: .leading)
}
}
var body: some View {
VStack(alignment: .center){
HStack(){
Text("First Name").modifier(Label(width: $width))
TextField("First name", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack(){
Text("Last Name").modifier(Label(width: $width))
TextField("Last Name", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
HStack{
Text("Phone numbe").modifier(Label(width: $width))
TextField("Phone number", text: $name).textFieldStyle(RoundedBorderTextFieldStyle())
}
Spacer()
}.padding(10)
}
}
以上是关于如何设置Java里面textfield的对齐方式的主要内容,如果未能解决你的问题,请参考以下文章