在JFrame中设置布局时出现问题

普拉达纳帕兰

我正在尝试在面板中设置文本框和标签,但是文本框的尺寸不合适,布局也没有正确设置

public class FrameLayout1 implements ActionListener {
 JTextField[] txtName;
    JLabel[] lblname; 
    JCheckBox keyButton;
    JCheckBox cascadeButton;
    JComboBox SetList;
    JComboBox ClassList;
    JLabel[] lblType;
    JTextField txtJoinColumn;
    JLabel[] lblAssoType;
    JTextField[] txtJoinColumnAssoc;

    FrameLayout1(){

    }
  public void setDetailsPanel() 
    {

        txtName = new JTextField[10];
        txtJoinColumnAssoc = new JTextField[10];
        lblname=new JLabel[10]; 
        lblType=new JLabel[10];
        lblAssoType=new JLabel[20]; 
        JFrame ColumnFrame=new JFrame("Enter the Column Values"); 

        int i=0;

        JPanel panel =  new JPanel(new GridLayout(0,1,5,10));

        for (i=0;i<5;i++) 
        {
            JPanel panelTxtLbl =  new JPanel(new GridLayout(0,2));
            lblname[i] = new JLabel("label"+i+":", JLabel.LEFT);
            panelTxtLbl.add(lblname[i]);

            txtName[i] = new JTextField(15);
            panelTxtLbl.add(txtName[i]);

            panel.add(panelTxtLbl);
            lblType[i] = new JLabel("labeldata", JLabel.LEFT);
            panel.add(lblType[i]);


            String[] SetStrings = { "One to Many","Many to Many" };
            SetList = new JComboBox(SetStrings);
            SetList.setSelectedIndex(1);
            panel.add(SetList);

            cascadeButton = new JCheckBox("cascade"); 
            cascadeButton.setSelected(true);
            panel.add(cascadeButton);

            JPanel panelSetClass =  new JPanel(new GridLayout(0,2));
            for(int j=0;j<3;j++)
             {
                lblAssoType[j]=new JLabel("Label Inner"+j+":", JLabel.LEFT);
                panelSetClass.add(lblAssoType[j]);

                txtJoinColumnAssoc[j] = new JTextField(15);
                panelSetClass.add(txtJoinColumnAssoc[j]);

             }
                panel.add(panelSetClass);
                panel.add(createHorizontalSeparator());
        } 


            //detailsPanel.add(panel, BorderLayout.CENTER);
            //detailsPanel.setAutoscrolls(true);
            panel.setAutoscrolls(true);
            JButton button = new JButton("Submit");
            button.addActionListener(this);
            //detailsPanel.add(button,BorderLayout.PAGE_END); 
            panel.add(button,BorderLayout.PAGE_END); 

            Color c=new Color(205, 222, 216);
            ColumnFrame.setLayout(new BorderLayout());
            ColumnFrame.add(panel,BorderLayout.CENTER);
            //ColumnFrame.setSize(700,600);
            ColumnFrame.setBackground(c);
            ColumnFrame.pack();
            ColumnFrame.setVisible(true);
            ColumnFrame.setLocation(200, 200);
    }
    /*
     * to add a horizontal line in the panel
     */
    static JComponent createHorizontalSeparator() {  
         JSeparator x = new JSeparator(SwingConstants.HORIZONTAL);  
         x.setPreferredSize(new Dimension(3,2));  
         return x;   
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    } 


}

createHorizo​​ntalSeparator函数可帮助您在面板中添加一条水平线,因为我无法分隔字段。

电流输出

伊姆古尔

期望的输出

伊姆古尔

Jan Bodnar |

Today, I answered a similar question where GridLayout caused much the same confusion. Do yourself a service and use a flexible layout manager (if it is possible) like MigLayout to create your layouts. These simple built-in layout managers either have very limited application (GridLayout, FlowLayout, BorderLayout) or it can become challenging to create sofisticated layouts with them (BoxLayout).

GridLayout and BorderLayout stretch their components and do not honour the size bounds of their children. This is the reason why you have those unnecessary spaces and why the button is expanded horizontally.

The following is an example that mimics your layout. It is created with the powerful MigLayout manager.

package com.zetcode;

import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;


public class DetailsPanel extends JFrame {

    public DetailsPanel() {

        initUI();

        setTitle("Details");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    private void initUI() {

        setLayout(new MigLayout("ins 10, wrap 2", "[][grow]"));

        add(new JLabel("Label 1:"));
        add(new JTextField(), "w 200, growx");

        add(new JLabel("Label 2:"));
        add(new JTextField(), "growx");    

        add(new JLabel("Label 3:"));
        add(new JTextField(), "gaptop 30, growx");

        add(new JLabel("Label 4:"));
        add(new JTextField(), "growx");      

        add(new JLabel("Label 5:"));
        add(new JTextField(), "gaptop 30, growx");

        add(new JLabel("Label 6:"));
        add(new JTextField(), "growx");          

        add(new JButton("Submit"), "gaptop 30, skip, right");


        pack();
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                DetailsPanel ex = new DetailsPanel();
                ex.setVisible(true);
            }
        });
    }
}

您需要花一些时间来学习一个更复杂的布局管理器,但是它会有所回报。特别是,如果您经常在Swing中构建布局。

细节

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Rails 4迁移中设置自定义主键时出现问题

来自分类Dev

在Laravel 4中在运行时设置debug => true时出现问题

来自分类Dev

在Makefile中设置PATH时出现问题

来自分类Dev

设置Pubnub Nodejs服务器时出现问题

来自分类Dev

设置DNS地址时出现问题

来自分类Dev

在Android的“自定义适配器”中设置Textview的文本时出现问题

来自分类Dev

在Windows 8中使用Mongo数据库设置Django时出现问题

来自分类Dev

在iTunesConnect中设置“税收信息”时出现问题

来自分类Dev

在for循环的自定义通知中动态添加RemoteViews,设置未决intent时出现问题

来自分类Dev

设置CKAN虚拟环境时出现问题

来自分类Dev

设置文本的垂直位置时出现问题

来自分类Dev

设置用户空间LXC容器时出现问题

来自分类Dev

在Ubuntu 12.04 LTS中更改桌面和程序中的设置时出现问题

来自分类Dev

创建和设置Scala项目时出现问题

来自分类Dev

设置python 3.7虚拟环境时出现问题

来自分类Dev

设置tornado.web.Application时出现问题

来自分类Dev

在Windows 10 Home上设置KUBECTL时出现问题

来自分类Dev

条带:在订阅上设置关联帐户时出现问题

来自分类Dev

PHP在设置数组中“选择”菜单的值时出现问题

来自分类Dev

设置Shopizer时出现问题

来自分类Dev

在代码中设置自动布局约束时出现奇怪的问题

来自分类Dev

在GWT的RPC调用中的“选择项目”中设置值时出现问题

来自分类Dev

使用LUKS引导时出现问题的键盘布局

来自分类Dev

在CentOS中设置Web服务器时出现问题

来自分类Dev

在Ubuntu 16.04中设置802.1x身份验证时出现问题

来自分类Dev

按下后退按钮时活动布局出现问题

来自分类Dev

在自举轮播中设置全宽/高度字幕时出现问题

来自分类Dev

Java布局出现问题

来自分类Dev

启动Sikuli设置时出现问题

Related 相关文章

  1. 1

    在Rails 4迁移中设置自定义主键时出现问题

  2. 2

    在Laravel 4中在运行时设置debug => true时出现问题

  3. 3

    在Makefile中设置PATH时出现问题

  4. 4

    设置Pubnub Nodejs服务器时出现问题

  5. 5

    设置DNS地址时出现问题

  6. 6

    在Android的“自定义适配器”中设置Textview的文本时出现问题

  7. 7

    在Windows 8中使用Mongo数据库设置Django时出现问题

  8. 8

    在iTunesConnect中设置“税收信息”时出现问题

  9. 9

    在for循环的自定义通知中动态添加RemoteViews,设置未决intent时出现问题

  10. 10

    设置CKAN虚拟环境时出现问题

  11. 11

    设置文本的垂直位置时出现问题

  12. 12

    设置用户空间LXC容器时出现问题

  13. 13

    在Ubuntu 12.04 LTS中更改桌面和程序中的设置时出现问题

  14. 14

    创建和设置Scala项目时出现问题

  15. 15

    设置python 3.7虚拟环境时出现问题

  16. 16

    设置tornado.web.Application时出现问题

  17. 17

    在Windows 10 Home上设置KUBECTL时出现问题

  18. 18

    条带:在订阅上设置关联帐户时出现问题

  19. 19

    PHP在设置数组中“选择”菜单的值时出现问题

  20. 20

    设置Shopizer时出现问题

  21. 21

    在代码中设置自动布局约束时出现奇怪的问题

  22. 22

    在GWT的RPC调用中的“选择项目”中设置值时出现问题

  23. 23

    使用LUKS引导时出现问题的键盘布局

  24. 24

    在CentOS中设置Web服务器时出现问题

  25. 25

    在Ubuntu 16.04中设置802.1x身份验证时出现问题

  26. 26

    按下后退按钮时活动布局出现问题

  27. 27

    在自举轮播中设置全宽/高度字幕时出现问题

  28. 28

    Java布局出现问题

  29. 29

    启动Sikuli设置时出现问题

热门标签

归档