java combobox大小_java-Swing GridBagLayout组件的大小调整

本文通过示例代码展示了如何在Java Swing中使用GridBagLayout布局管理器来精细化调整组件大小,包括JComboBox、JTextField和JButton等。作者建议将UI拆分为多个部分,并手动调整布局,以实现更灵活的界面设计。
摘要由CSDN通过智能技术生成

正如我在评论中所建议的那样,并且Hovercraft已经提出了建议,我建议您将UI细分为几个部分,分别关注每个部分的布局要求,否则您会发现对一个组件做出的决定不利.对他人的影响.

我还建议您避免使用GUI设计器,直到您对布局的实际用途有一个合理的了解并手动编写布局.别误会,我一直使用Netbeans表单设计器,但是我也手动调整了许多UI,尤其是当您需要生成动态且不断变化的UI时

以下内容演示了我在说什么.我已经使用LineBorder突出显示了UI的每个部分.

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.EventQueue;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

public class BadLayout25 {

public static void main(String[] args) {

new BadLayout25();

}

public BadLayout25() {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

}

JFrame frame = new JFrame("Test");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout());

frame.add(new BasePane());

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

});

}

public class BasePane extends JPanel {

public BasePane() {

setLayout(new GridBagLayout());

GridBagConstraints gbc = new GridBagConstraints();

gbc.gridx = 0;

gbc.gridy = 0;

gbc.gridwidth = 2;

gbc.fill = java.awt.GridBagConstraints.HORIZONTAL;

gbc.weightx = 1.0;

add(getTopPane(), gbc);

gbc = new java.awt.GridBagConstraints();

gbc.gridx = 0;

gbc.gridy = 1;

gbc.fill = java.awt.GridBagConstraints.HORIZONTAL;

gbc.weightx = 0.5;

add(getOptionsPane(), gbc);

gbc = new java.awt.GridBagConstraints();

gbc.gridx = 0;

gbc.gridy = 2;

gbc.fill = java.awt.GridBagConstraints.BOTH;

gbc.weightx = 0.5;

gbc.weighty = 1.0;

add(getButtonPane(), gbc);

JTextArea textArea = new JTextArea(5, 20);

gbc = new java.awt.GridBagConstraints();

gbc.gridx = 1;

gbc.gridy = 1;

gbc.gridheight = 2;

gbc.fill = java.awt.GridBagConstraints.BOTH;

gbc.weightx = 0.5;

gbc.weighty = 1.0;

add(new JScrollPane(textArea), gbc);

}

@Override

public Dimension getPreferredSize() {

return new Dimension(800, 400);

}

protected JPanel getTopPane() {

JPanel topPane = new JPanel(new GridBagLayout());

topPane.setBorder(BorderFactory.createLineBorder(java.awt.Color.RED));

topPane.add(new JLabel("Lotereya:"));

topPane.add(new JLabel("Yuklenilir"));

return topPane;

}

protected JPanel getOptionsPane() {

JPanel optionsPane = new JPanel(new GridBagLayout());

optionsPane.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 255, 0)));

GridBagConstraints gbc = new GridBagConstraints();

gbc = new GridBagConstraints();

gbc.anchor = java.awt.GridBagConstraints.LINE_START;

optionsPane.add(new JLabel("Tiraj nomre:"), gbc);

gbc = new GridBagConstraints();

gbc.gridx = 0;

gbc.gridy = 1;

gbc.gridwidth = 2;

gbc.anchor = java.awt.GridBagConstraints.LINE_START;

optionsPane.add(new JLabel("Sablon nomresi:"), gbc);

JTextField field = new JTextField(10);

gbc = new GridBagConstraints();

gbc.gridx = 2;

gbc.gridy = 1;

gbc.anchor = java.awt.GridBagConstraints.LINE_START;

gbc.weightx = 1.0;

optionsPane.add(field, gbc);

JComboBox comboBox = new JComboBox();

gbc = new GridBagConstraints();

gbc.gridx = 1;

gbc.gridy = 0;

gbc.gridwidth = 2;

gbc.anchor = java.awt.GridBagConstraints.LINE_START;

gbc.weightx = 1.0;

optionsPane.add(comboBox, gbc);

return optionsPane;

}

protected JPanel getButtonPane() {

JPanel buttonsPane = new JPanel(new GridBagLayout());

buttonsPane.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 255)));

GridBagConstraints gbc = new GridBagConstraints();

gbc = new java.awt.GridBagConstraints();

gbc.gridx = 0;

gbc.gridy = -1;

gbc.fill = java.awt.GridBagConstraints.BOTH;

gbc.weightx = 0.25;

gbc.weighty = 0.25;

for (int index = 0; index < 9; index++) {

if (index % 3 == 0) {

gbc.gridy++;

gbc.gridx = 0;

} else {

gbc.gridx++;

}

buttonsPane.add(new JButton(String.valueOf(index + 1)), gbc);

}

gbc = new GridBagConstraints();

gbc.gridx = 1;

gbc.gridy = 3;

gbc.fill = java.awt.GridBagConstraints.BOTH;

gbc.weightx = 0.25;

gbc.weighty = 0.25;

buttonsPane.add(new JButton("0"), gbc);

gbc = new GridBagConstraints();

gbc.gridx = 3;

gbc.gridy = 0;

gbc.fill = java.awt.GridBagConstraints.BOTH;

gbc.weightx = 0.25;

gbc.weighty = 0.25;

buttonsPane.add(new JButton("Tesdiq"), gbc);

gbc.gridy++;

buttonsPane.add(new JButton(""), gbc);

gbc.gridy++;

buttonsPane.add(new JButton(""), gbc);

gbc.gridy++;

buttonsPane.add(new JButton(""), gbc);

return buttonsPane;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值