【问题标题】:JTextField can't be resizedJTextField 无法调整大小
【发布时间】:2015-02-03 16:58:51
【问题描述】:

我是 JFrame、组件等方面的新手,但我正在尝试更改特定文本字段的大小,以便您可以实际看到您放入其中的内容。代码如下:

import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class InterestCalculator extends JFrame{

    private static final long serialVersionUID = 1L;

    JLabel desc = new JLabel("This is a simple interest calculator.\n"
            + " Enter three fields to get the fourth.");
    JLabel inteLabel = new JLabel("\nInterest: ");
    JTextField inte = new JTextField();

    public static void main(String [] args) {
        InterestCalculator comp = new InterestCalculator();
        comp.FrameHandler();
    }

        public void FrameHandler() {

        setSize(500, 500);
        setTitle("Template");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setLayout(new FlowLayout());

        add(desc);
        add(inteLabel);
        add(inte);

        inte.setSize(new Dimension(100,15));

        validate();
    }
}

这是出来的:http://i.imgur.com/SoOEMNT.png 那么,我该如何解决呢?

【问题讨论】:

  • 如果您有多个问题,请分别提出。
  • “奖励:为以后节省一些时间,..” 现在问一个单独的问题。 SO 是一个问答网站,每个线程都应该有一个特定的问题,而不是帮助台。
  • 顺便说一句 - 添加组件后将 setSize(500, 500); 替换为 pack()。第一个只是猜测 GUI 需要多大。第二个将导致大小恰好与它需要的一样大。
  • 不要使用验证。相反,setVisible(...) 语句应该是在将所有组件添加到框架之后执行的最后一个语句。另外,您应该在 setVisible(...); 之前调用 pack();

标签: java swing resize jframe jtextfield


【解决方案1】:
JTextField inte = new JTextField();

应该设置列数,I.E.:

JTextField inte = new JTextField(10);

另见Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?(是的。)

这同样适用于setSize(..)

【讨论】:

  • 加一,不过主要问题应该出在setLayout(new FlowLayout());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 2013-02-23
  • 1970-01-01
相关资源
最近更新 更多