【问题标题】:how to make the text field next to the label in GUI如何在 GUI 中的标签旁边制作文本字段
【发布时间】:2021-06-20 13:35:53
【问题描述】:
import java.awt.*;
import javax.swing.*;
public class guiAs {
    public static void main (String args [] )
    {
        JFrame frame = new JFrame ();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(new Dimension (300,300));
        frame.setTitle("Calculator");
                
        JPanel panel = new JPanel();
//        JLabel label = new JLabel();

        //creating num1
        JPanel panel2 = new JPanel();
        JLabel lable1 = new JLabel("Number 1 ");
        JTextField tf1 = new JTextField();
        
        //creating num2
        JLabel lable2 = new JLabel("Number 2 ");
        JTextField tf2 = new JTextField();
        
        //creating result
        JPanel panel3 = new JPanel();
        JLabel lable3 = new JLabel("Result: ");
        JTextField tf3 = new JTextField(10);
        
        //creating button
        JButton Add= new JButton("Add");
        JButton Subtract = new JButton("Subtract");
        JButton Multiply = new JButton("Multiply");
        JButton Division = new JButton("Division");
        
        //creating num1
        panel2.add(lable1);
        panel2.add(tf1);
        
        //creating num2
        panel2.add(lable2);
        panel2.add(tf2);
        
        //creating result
        panel3.add(lable3);
        panel3.add(tf3);
        
        //creating buttons
        panel.add(Add);
        panel.add(Subtract);
        panel.add(Multiply);
        panel.add(Division);
        
//        frame.getContentPane().add(BorderLayout.WEST, panel3);

        //creating Box Layout for num1 and num2
        BoxLayout layout2 = new BoxLayout(panel2, BoxLayout.Y_AXIS);
        panel2.setLayout(layout2); 
        frame.setLayout(new FlowLayout());
        frame.add(panel2);        

        //creating Box Layout for buttons
        BoxLayout layout1 = new BoxLayout(panel, BoxLayout.Y_AXIS);
        panel.setLayout(layout1); 
         frame.setLayout(new FlowLayout());
        frame.add(panel);
        
    
//        Add.setAlignmentX(Component.RIGHT_ALIGNMENT);
//        panel.add(Add);
               
      
//            frame.getContentPane().add(BorderLayout.SOUTH, panel);
            //creating Border Layout for num1 and num2
            frame.getContentPane().add(BorderLayout.WEST, panel2);
            
            //creating Border Layout for Buttons
            frame.getContentPane().add(BorderLayout.EAST, panel);
            
            //creating Box Layout for Result
            frame.getContentPane().add(BorderLayout.SOUTH, panel3);

            frame.setVisible(true);
        

    }
    
}

这是我的代码,我不知道在数字旁边设置文本字段。我尝试了几次,但没有走到一起。每当我添加一些东西时,面板就会移动 它只对结果起作用,但对数字不起作用 在这里,我对按钮和数字 1 和数字 2 使用了框布局:

【问题讨论】:

  • 阅读 Layout Managers 上的 Swing 教程,了解每个布局管理器的基础知识。您使用具有不同布局管理器的面板的方法是正确的。您将框架布局设置为:frame.setLayout(new FlowLayout());,但稍后使用:frame.getContentPane().add(BorderLayout.WEST, panel2);。这是行不通的,因为您不能在 FlowLayout 上使用 BorderLayout 约束。此外,使用 BorderLayout 时,代码应为:frame.getContentPane().add(panel2, BorderLayout.LINE_START);。阅读 BorderLayout 演示。

标签: java user-interface textfield


【解决方案1】:

你已经非常接近解决它了。

替换此行

JPanel panel2 = new JPanel();

用这条线

JPanel panel2 = new JPanel(new GridLayout(2, 2));

那么,去掉这三行

BoxLayout layout2 = new BoxLayout(panel2, BoxLayout.Y_AXIS);
panel2.setLayout(layout2); 
frame.setLayout(new FlowLayout());

现在您的代码如下所示

【讨论】:

    猜你喜欢
    • 2021-06-01
    • 2015-01-10
    • 2022-12-26
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2020-05-22
    相关资源
    最近更新 更多