【问题标题】:The JTextfield doesn't show like I wantJTextfield 不像我想要的那样显示
【发布时间】:2021-10-06 04:53:26
【问题描述】:

我是 Java 新手,找不到简单的解决方案。在下图中,您可以看到我的问题所在。我想编写一个程序,我可以在其中创建播放列表并保护它们,但我已经卡在了开头,因为JTextfield 太小了。

import javax.swing.JFrame;

public class Main {
    
    public static void main(String args[]) {
        JFrame w = new Layout();
        w.setVisible(true);
        w.setSize(600, 600);
        w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        w.setLocationRelativeTo(null);
        w.setResizable(true);
    }
}
import java.awt.*;
import javax.swing.*;
import javax.swing.border.LineBorder;

public class Layout extends JFrame{

        JTextField input;
    
    Layout(){   
        
        //title and layout type
        super("ThePlay");
        setLayout(new FlowLayout());
        
        JButton s;  //search button
        JButton h;  //home button
        JButton mp; //my playlist button
        JButton cp; //create playlist button
        JButton fs; //favorite songs button

        //frame constructor
        Container mainContainer = this.getContentPane();
        mainContainer.setLayout(new BorderLayout(8,6));
        mainContainer.setBackground(Color.GRAY);
        this.getRootPane().setBorder(BorderFactory.createMatteBorder(4, 4, 4, 4, Color.GRAY));
        
        //input constructor
        input = new JTextField();
        input.setBounds(300, 50, 150, 25);
        
        //up frame
        JPanel topPanel = new JPanel();
        topPanel.setBorder(new LineBorder(Color.BLACK, 3));
        topPanel.setBackground(Color.GRAY);
        topPanel.setLayout(new FlowLayout(6));
        
        //bot frame
        JPanel downPanel = new JPanel();
        downPanel.setBorder(new LineBorder(Color.BLACK, 3));
        downPanel.setBackground(Color.GRAY);
        downPanel.setLayout(new FlowLayout(5));
        
        //create buttons
        s = new JButton("Search");
        h = new JButton("Home");
        mp = new JButton("My Playlists");
        cp = new JButton("Create Playlist");
        fs = new JButton("Favorite Songs");
        
        
        //add buttons to the frame
        mainContainer.add(topPanel,BorderLayout.NORTH);     //top frame location
        mainContainer.add(downPanel,BorderLayout.CENTER);   //bottom frame location
        topPanel.add(input);
        topPanel.add(s);
        topPanel.add(h);
        topPanel.add(mp);
        topPanel.add(cp);
        topPanel.add(fs);   
    }
}

【问题讨论】:

  • “我找不到简单的解决方案” Reading the (fine) manual 并不难。在提出关于 SO 的问题之前,您应该始终检查文档(和教程)。

标签: java swing jtextfield


【解决方案1】:

你可以这样给JTextField一个尺寸:

input = new JTextField(20);

来自documentation

传递给 JTextField 构造函数的整数参数,20 在 例如,表示字段中的列数。这个数字是 与字段当前字体提供的指标一起使用 计算字段的首选宽度。它不限制数量 用户可以输入的字符。

【讨论】:

  • @Hunglaublich 如果你觉得它有帮助,你可以接受它作为使用绿色检查的解决方案
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
相关资源
最近更新 更多