Java 如何将JTextfield居中

Java 如何将JTextfield居中,java,swing,awt,jtextfield,layout-manager,Java,Swing,Awt,Jtextfield,Layout Manager,我在程序中无法将JTexfield居中。Textfield似乎与JButton不对齐。我尝试过使用x.sethoriontallignment(JTextfield.CENTER);但是没有用。有什么想法吗 import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxL

我在程序中无法将JTexfield居中。Textfield似乎与JButton不对齐。我尝试过使用x.sethoriontallignment(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);
}//构造函数结束按钮duo

 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);
  }
}

我已经检查了你的代码。它已经在中间了。

首先:
x.setHorizontalAlignment(JTextField.CENTER)将在中间设置文本,而不是JTEXT字段

如果您想使JTextField位于中间,只需创建
panel=newjpanel()并像这样在上面添加按钮:
面板。添加(按钮1)

panel.add(按钮2)

panel.add(文本输入,BorderLayout.CENTER)-->这里我在jpanel的中心设置了
textInput

然后:将“Jpanel”添加到Jframe:
frame.add(面板)

试试这个:

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.");
    }
}

只需使用
setBounds
属性

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

第一个x将
文本字段
向左或向右移动。第二个将其向上或向下移动。第三个是宽度,最后一个是长度

在面板中使用BorderLayout并将JTextField添加到面板的中心。在使框架可见后,您将添加textInput。把这两个语句调换一下。它已经在中间了