0 0

关于Swing中Box跟JPanel以及setSize的疑问5

最近我在学习中发现了一些问题,就是下面的程序,有两个问题:

1.JTextField与JPasswordField的setSize方法是用来设置大小的么?为什么我在使用的时候却没有任何效果呢?

2.为什么要把Box加入JPanel,然后再加入JFrame,才能得到我要的效果呢?而当我直接把Box加入JFrame时,界面却变得很奇怪,特别是JTextField跟JPasswordField会膨胀开来?

程序如下:

package test.swing;

import java.awt.event.*;

import javax.swing.*;

public class LoginTest extends JFrame implements ActionListener  {

    private JPanel jp=new JPanel();
    private JPanel jp1=new JPanel();
    private JPanel jp2=new JPanel();
    private JPanel jp3=new JPanel();
    JLabel name=new JLabel("请输入用户名");
    JLabel password=new JLabel("请输入密码");
    JLabel show=new JLabel();
    JButton login=new JButton("登陆");
    JButton reset=new JButton("重置");
    JTextField jtf_name=new JTextField("",10);
    JPasswordField jpf_password=new JPasswordField("",10);
    private Box horibox1=Box.createHorizontalBox();
    private Box horibox2=Box.createHorizontalBox();
    private Box horibox3=Box.createHorizontalBox();
    private Box verbox=Box.createVerticalBox();
   
    public LoginTest(){
        name.setSize(10, 10);
        password.setSize(10, 10);
        //jt_name.setSize(200, 1000);   //setSize为什么不起作用呢?
        //jpf_password.setSize(200,1000); //setSize为什么不起作用呢?
        jpf_password.setEchoChar('*');
       
        horibox1.add(name);
        horibox1.add(Box.createHorizontalStrut(20));
        horibox1.add(jtf_name);
        horibox2.add(password);
        horibox2.add(Box.createHorizontalStrut(20));
        horibox2.add(jpf_password);
        horibox3.add(login);
        horibox3.add(Box.createHorizontalStrut(40));
        horibox3.add(reset);
       
        jp1.add(horibox1);
        jp2.add(horibox2);
        jp3.add(horibox3);
       
        verbox.add(jp1);
        verbox.add(jp2);
        verbox.add(jp3);
       
//        verbox.add(horibox1);    //把上面六行换成这三行,为什么效果会变得很奇怪呢?
//        verbox.add(horibox2);    //JPanel跟Box之间有什么样的区别?
//        verbox.add(horibox3);
       
        verbox.add(show);
       
        login.addActionListener(this);
        reset.addActionListener(this);
       
        this.add(verbox);
        this.setTitle("登陆窗口");
        this.setVisible(true);
        this.setBounds(200, 200, 300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String []args){
        new LoginTest();
    }
   
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==login){
            jtf_name.setText("login");
            jpf_password.setText("login");
        }else if(e.getSource()==reset){
            jtf_name.setText("reset");
            jpf_password.setText("reset");
        }
    }

}
 
 

 

2009年5月24日 10:42

1个答案 按时间排序 按投票排序

0 0

采纳的答案

调用组件的setSize()方法之后,如果没效果,尝试调用JPanel的repaint()
Swing的架构就是这样的,组件必须添加到JComponent上才可以,JPanel是继承JComponent的JFrame不是

2009年5月26日 16:23

相关推荐

    Javaswing登录页面的实现

    this.frame.setSize(460, 355); frame.setLocationRelativeTo(null); // 在屏幕中居中显示 frame.add(this.panel); // 添加面板 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置X号后关闭 //...

    实验五 JAVA图形界面 窗口及常用控件练习

    1. **掌握AWT的container类的使用**:重点掌握Swing中的`JFrame`和`JPanel`如何创建窗口以及如何设置窗口属性。 2. **熟练使用API文档**:学会如何查阅文档,以便能够在文档中快速找到所需的内容。 3. **掌握容器...

    推箱子 代码 一关的 简单的

    setSize(400, 400); Container c = getContentPane(); GamePanel panel1 = new GamePanel(); c.add(panel1); } } ``` #### GamePanel 类 `GamePanel` 类继承自 `JPanel` 并实现了 `KeyListener` 接口,用于...

    GUI编程技术-布局管理.doc

    本文详细介绍了Java Swing中几种常用的布局管理器:`BorderLayout`、`FlowLayout`、`CardLayout`、`GridLayout`、`BoxLayout`以及`Null`布局,并提供了相应的示例代码。选择合适的布局管理器对于创建美观且功能强大...

    java小游戏推箱子

    setSize(400, 400); Container c = getContentPane(); GamePanel panel1 = new GamePanel(); c.add(panel1); } ``` #### `GamePanel`类 这个类是游戏的主要绘制区域,继承自`JPanel`,并且实现了`KeyListener`...

    java 构造空心方框

    例如,在Swing中,你可以使用`JFrame`,`JPanel`,以及自定义的`paintComponent`方法来绘制图形。 ```java import javax.swing.*; import java.awt.*; public class StringDemo_19 extends JFrame { public ...

    Java中关于多媒体方面的API使用的研究

    frame.setSize(600, 600); frame.setVisible(true); } } ``` #### 三、Java Sound API 使用方法的研究 **3.1 JAVA Sound API 简介** Java Sound API 是Java平台上的音频处理API,支持音频输入输出、混音、采样...

    java数独程序.pdf

    this.setSize(300, 300); this.setLocation(200, 200); this.setVisible(true); this.setResizable(false); JPanel apanel_but = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel apanel_txt = new ...

    一个简单的MySQL登录界面

    setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); setLayout(new BorderLayout()); add(panel, BorderLayout.CENTER); JLabel usernameLabel = new ...

    java 记事本课程设计带源码和文档

    setSize(400,300); setVisible(true); ② 菜单代码 public void createMenu(){ //创建JMenuBar mainMenuBar=new JMenuBar(); //创建四个JMenu fileMenu=new JMenu("文件"); editMenu=new JMenu("编辑"); ...

    自己編的 俄羅斯方塊

    setSize(241,232); setLocation(400,200); setLayout(new BorderLayout(10,10)); makeobjet=new Random(); N=makeobjet.nextInt(19); setBackground(Color.yellow); mb=new MenuBar(); caozuo=new ...

    JAVA编写的图书馆管理系统

    setSize(330,300); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); add(text,BorderLayout.CENTER); try{ FileInputStream input=new FileInputStream(...

Global site tag (gtag.js) - Google Analytics