Java 如何将JTextField与GridLayout的其余部分分离

Java 如何将JTextField与GridLayout的其余部分分离,java,swing,awt,grid-layout,Java,Swing,Awt,Grid Layout,我正试着做一个有趣的计算器。但当我试图让它看起来像一个。。。计算器,它就像一个大网格,如下所示: 我试着跟踪我在互联网上找到的任何东西,但那是一个巨大的失败 有谁能帮我把JTextField分开,这样它就不会这样做了,它就可以在自己的行中了 代码如下: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main extends JFrame { public Main() {

我正试着做一个有趣的计算器。但当我试图让它看起来像一个。。。计算器,它就像一个大网格,如下所示:

我试着跟踪我在互联网上找到的任何东西,但那是一个巨大的失败

有谁能帮我把JTextField分开,这样它就不会这样做了,它就可以在自己的行中了

代码如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main extends JFrame {
    public Main() {
        // Row = ->
        // Column = ^
        Container cp = getContentPane();
        cp.setLayout(new GridLayout(3, 0));

        JTextField txtCalc = new JTextField("0");
        txtCalc.setHorizontalAlignment(SwingConstants.RIGHT);
        JButton btn0 = new JButton("0");
        JButton btn1 = new JButton("1");
        JButton btn2 = new JButton("2");
        JButton btn3 = new JButton("3");
        JButton btn4 = new JButton("4");
        JButton btn5 = new JButton("5");
        JButton btn6 = new JButton("6");
        JButton btn7 = new JButton("7");
        JButton btn8 = new JButton("8");
        JButton btn9 = new JButton("9");
        JButton btn10 = new JButton("10");

        cp.add(txtCalc);
        cp.add(btn0);
        cp.add(btn1);
        cp.add(btn2);
        cp.add(btn3);
        cp.add(btn4);
        cp.add(btn5);
        cp.add(btn6);
        cp.add(btn7);
        cp.add(btn8);
        cp.add(btn9);
        cp.add(btn10);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Calculator");
        setSize(600, 600);
        setVisible(true);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(Main::new);
    }
}
编辑: 现在我有答案了!这是我的固定代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main extends JFrame {
    public Main() {
        Container cp = getContentPane();
        cp.setLayout(new GridLayout(3, 0));
        JPanel mainPanel = new JPanel(new BorderLayout());
        JPanel buttonPanel = new JPanel(new GridLayout(3, 0));
        setContentPane(border);

        JTextField txtCalc = new JTextField("0");
        txtCalc.setHorizontalAlignment(SwingConstants.RIGHT);
        txtCalc.setEditable(true);

        JButton btn1 = new JButton("1");
        JButton btn2 = new JButton("2");
        JButton btn3 = new JButton("3");
        JButton btn4 = new JButton("4");
        JButton btn5 = new JButton("5");
        JButton btn6 = new JButton("6");
        JButton btn7 = new JButton("7");
        JButton btn8 = new JButton("8");
        JButton btn9 = new JButton("9");
        JButton btn0 = new JButton("0");

        mainPanel.add(buttonPanel, BorderLayout.CENTER);
        mainPanel.add(txtCalc, BorderLayout.NORTH);

        buttonPanel.add(btn1);
        buttonPanel.add(btn2);
        buttonPanel.add(btn3);
        buttonPanel.add(btn4);
        buttonPanel.add(btn5);
        buttonPanel.add(btn6);
        buttonPanel.add(btn7);
        buttonPanel.add(btn8);
        buttonPanel.add(btn9);
        buttonPanel.add(btn0);

    public static void main(String[] args) {
        SwingUtilities.invokeLater(Main::new);
    }
}

让主面板使用边框布局。将JTextField置于北位置。将按钮放在使用GridLayout的面板中,然后将该面板添加到中间位置的主面板中

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main extends JFrame {
public Main() {
    JPanel mainPanel = new JPanel(new BorderLayout());
    setContentPane(mainPanel);
    JTextField txtCalc = new JTextField("0");
    txtCalc.setHorizontalAlignment(SwingConstants.RIGHT);

    JPanel buttonPanel = new JPanel(new GridLayout(3, 0));

    JButton btn0 = new JButton("0");
    JButton btn1 = new JButton("1");
    JButton btn2 = new JButton("2");
    JButton btn3 = new JButton("3");
    JButton btn4 = new JButton("4");
    JButton btn5 = new JButton("5");
    JButton btn6 = new JButton("6");
    JButton btn7 = new JButton("7");
    JButton btn8 = new JButton("8");
    JButton btn9 = new JButton("9");

    buttonPanel.add(txtCalc);
    buttonPanel.add(btn0);
    buttonPanel.add(btn1);
    buttonPanel.add(btn2);
    buttonPanel.add(btn3);
    buttonPanel.add(btn4);
    buttonPanel.add(btn5);
    buttonPanel.add(btn6);
    buttonPanel.add(btn7);
    buttonPanel.add(btn8);
    buttonPanel.add(btn9);

    mainPanel.add(txtCalc, BorderLayout.NORTH);
    mainPanel.add(buttonPanel, BorderLayout.CENTER);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setTitle("Calculator");
    setSize(600, 600);
    setVisible(true);
}
public static void main(String[] args) {
    SwingUtilities.invokeLater(Main::new);
}
}

让主面板使用边框布局。将JTextField置于北位置。将按钮放在使用GridLayout的面板中,然后将该面板添加到中间位置的主面板中

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main extends JFrame {
public Main() {
    JPanel mainPanel = new JPanel(new BorderLayout());
    setContentPane(mainPanel);
    JTextField txtCalc = new JTextField("0");
    txtCalc.setHorizontalAlignment(SwingConstants.RIGHT);

    JPanel buttonPanel = new JPanel(new GridLayout(3, 0));

    JButton btn0 = new JButton("0");
    JButton btn1 = new JButton("1");
    JButton btn2 = new JButton("2");
    JButton btn3 = new JButton("3");
    JButton btn4 = new JButton("4");
    JButton btn5 = new JButton("5");
    JButton btn6 = new JButton("6");
    JButton btn7 = new JButton("7");
    JButton btn8 = new JButton("8");
    JButton btn9 = new JButton("9");

    buttonPanel.add(txtCalc);
    buttonPanel.add(btn0);
    buttonPanel.add(btn1);
    buttonPanel.add(btn2);
    buttonPanel.add(btn3);
    buttonPanel.add(btn4);
    buttonPanel.add(btn5);
    buttonPanel.add(btn6);
    buttonPanel.add(btn7);
    buttonPanel.add(btn8);
    buttonPanel.add(btn9);

    mainPanel.add(txtCalc, BorderLayout.NORTH);
    mainPanel.add(buttonPanel, BorderLayout.CENTER);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setTitle("Calculator");
    setSize(600, 600);
    setVisible(true);
}
public static void main(String[] args) {
    SwingUtilities.invokeLater(Main::new);
}
}

我该怎么做呢?
JPanel mainPanel=newjpanel(newborderlayout());setContentPane(主面板);主面板。添加(txtCalc,BorderLayout.North);JPanel buttonPanel=新的JPanel(新的网格布局(3,0));主面板。添加(按钮面板,边框布局。中心)
已经这样做了,但是当我创建一个新的JPanel并将其设置为
new BorderLayout()
时,它只会使txtCalc消失。您是否将主面板设置为内容窗格?你把txtCalc添加到主面板了吗?那里!这是更容易遵循+1我该怎么做?
JPanel mainPanel=newjpanel(newborderlayout());setContentPane(主面板);主面板。添加(txtCalc,BorderLayout.North);JPanel buttonPanel=新的JPanel(新的网格布局(3,0));主面板。添加(按钮面板,边框布局。中心)
已经这样做了,但是当我创建一个新的JPanel并将其设置为
new BorderLayout()
时,它只会使txtCalc消失。您是否将主面板设置为内容窗格?你把txtCalc添加到主面板了吗?那里!这是更容易遵循+1阅读上Swing教程中的部分,以获得一个工作示例,帮助您入门。我做到了。正如我所说,这很难理解。阅读Swing教程中的一节,了解一个可以帮助您入门的示例。我做到了。就像我说的,很难理解。