如何将JTextfield居中

我在程序中居中使用JTexfield时遇到了麻烦。文本字段似乎与JButton不对齐。 我尝试过使用x.setHoriontalAlignment(JTextfield.CENTER); 但无济于事。 有任何想法吗?

import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JPanel; import java.awt.Container; import java.awt.GridLayout; import java.awt.GridBagLayout; public class WidgetProject implements ActionListener { //class constants private static final Color BUTTON_COLOUR1 = Color.WHITE; private static final int BUTTON_HEIGHT = 75; private static final int BUTTON_WIDTH = 400; private static final int TEXTFIELD_HEIGHT = 400; private static final int TEXTFIELD_WIDTH = 50; private static final String SECONDS_PER_MINUTE = "Seconds to Minutes or Minutes to Seconds"; private static final String BUTTON2_MODIFIED_LABEL = "yes"; private static final String POUNDS_PER_KILOGRAM = "Pounds to Kilograms or Kilograms to Pounds"; private static final String CHANGE_MY_LABEL = "1"; private static final int HEIGHT = 400; private static final int WIDTH = 400; // instance fields private JButton button1; private JButton button2; private JButton button3; private JButton button4; private JFrame frame; private JTextField textInput; private JPanel panel; /** * A free-standing frame with two buttons. * * @param title the title of this frame */ public WidgetProject(String title) { // Establish the frame. frame = new JFrame(title); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(WIDTH, HEIGHT)); // Establish button dimensions. Dimension buttonDimension = new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT); // Establish Textfield dimensions. Dimension textDimension = new Dimension(TEXTFIELD_HEIGHT, TEXTFIELD_WIDTH); // Create and add the first button. button1 = new JButton(SECONDS_PER_MINUTE); button1.setActionCommand(CHANGE_MY_LABEL); button1.addActionListener(this); button1.setPreferredSize(buttonDimension); button1.setMinimumSize(buttonDimension); button1.setMaximumSize(buttonDimension); button1.setBackground(BUTTON_COLOUR1); frame.add(button1); // Create and add the second button. button2 = new JButton(POUNDS_PER_KILOGRAM); button2.setActionCommand(CHANGE_MY_LABEL); button2.addActionListener(this); button2.setPreferredSize(buttonDimension); button2.setMinimumSize(buttonDimension); button2.setMaximumSize(buttonDimension); button2.setBackground(BUTTON_COLOUR1); frame.add(button2); // Create an input text field. textInput = new JTextField(20); textInput.setPreferredSize(textDimension); textInput.setMinimumSize(textDimension); textInput.setMaximumSize(textDimension); textInput.setHorizontalAlignment(JTextField.CENTER); panel = new JPanel(); panel.add(textInput); String string = textInput.getText(); // Display the frame and text field. frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.add(textInput); 

} //构造函数ButtonDuo的结尾

第一个: x.setHorizontalAlignment(JTextField.CENTER); 将文本设置在中心而不是JTextField

如果要将JTextField放在中心,只需创建panel = new JPanel(); 并在上面添加按钮像这样: panel.add(button1);

panel.add(button2);

panel.add(textInput, BorderLayout.CENTER); —>这里我将textInput设置在jpanel的中心

然后:将’Jpanel’添加到Jframe: frame.add(panel);

尝试这个 :

 package javaapplication1; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JPanel; class WidgetProject implements ActionListener { //class constants private static final Color BUTTON_COLOUR1 = Color.WHITE; private static final int BUTTON_HEIGHT = 75; private static final int BUTTON_WIDTH = 400; private static final int TEXTFIELD_HEIGHT = 400; private static final int TEXTFIELD_WIDTH = 50; private static final String SECONDS_PER_MINUTE = "Seconds to Minutes or Minutes to Seconds"; private static final String BUTTON2_MODIFIED_LABEL = "yes"; private static final String POUNDS_PER_KILOGRAM = "Pounds to Kilograms or Kilograms to Pounds"; private static final String CHANGE_MY_LABEL = "1"; private static final int HEIGHT = 400; private static final int WIDTH = 400; // instance fields private JButton button1; private JButton button2; private JButton button3; private JButton button4; private JFrame frame; private JTextField textInput; private JPanel panel; /** * A free-standing frame with two buttons. * * @param title the title of this frame */ public WidgetProject(String title) { // Establish the frame. frame = new JFrame(title); panel = new JPanel(); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(WIDTH, HEIGHT)); // Establish button dimensions. Dimension buttonDimension = new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT); // Establish Textfield dimensions. Dimension textDimension = new Dimension(TEXTFIELD_HEIGHT, TEXTFIELD_WIDTH); // Create and add the first button. button1 = new JButton(SECONDS_PER_MINUTE); button1.setActionCommand(CHANGE_MY_LABEL); button1.addActionListener(this); button1.setPreferredSize(buttonDimension); button1.setMinimumSize(buttonDimension); button1.setMaximumSize(buttonDimension); button1.setBackground(BUTTON_COLOUR1); panel.add(button1); // Create and add the second button. button2 = new JButton(POUNDS_PER_KILOGRAM); button2.setActionCommand(CHANGE_MY_LABEL); button2.addActionListener(this); button2.setPreferredSize(buttonDimension); button2.setMinimumSize(buttonDimension); button2.setMaximumSize(buttonDimension); button2.setBackground(BUTTON_COLOUR1); panel.add(button2); // Create an input text field. textInput = new JTextField(20); textInput.setPreferredSize(textDimension); textInput.setMinimumSize(textDimension); textInput.setMaximumSize(textDimension); textInput.setHorizontalAlignment(JTextField.CENTER); panel.add(textInput, BorderLayout.CENTER); String string = textInput.getText(); frame.add(panel); // Display the frame and text field. frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } // end of constructor ButtonDuo @Override public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); } } 
  import javax.swing.*; import java.awt.*; public class JTableComponent{ public static void main(String[] args) { new JTableComponent(); } public JTableComponent(){ JFrame // Establish the frame. frame = new JFrame("title"); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setPreferredSize(new Dimension(700, 700)); // Establish button dimensions. Dimension buttonDimension = new Dimension(120, 120); // Establish Textfield dimensions. Dimension textDimension = new Dimension(110, 110); // Create an input text field. JTextField textInput = new JTextField(20); textInput.setPreferredSize(textDimension); textInput.setMinimumSize(textDimension); textInput.setMaximumSize(textDimension); textInput.setHorizontalAlignment(JTextField.CENTER); JPanel panel = new JPanel(); panel.add(textInput); String string = textInput.getText(); // Display the frame and text field. frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.add(textInput); } } 

我检查过你的代码。已经在中间..

只需使用setBounds属性即可。

 Jtextfield.setBounds(x,x,x,x); 

第一个x向左或向右移动TextField 。 第二个向上或向下移动它。 第三个是宽度,最后一个是长度。