【发布时间】:2016-01-24 16:51:03
【问题描述】:
我正在尝试使用 GridBagLayout 将这两个元素添加到框架中,但是一旦我将 JComboBox 添加到 GridBagLayout 然后将其添加到框架中,JTextField 的宽度就会变得非常短,我不知道为什么或如何解决它。当我把 JComboBox 拿出来时,它工作得很好,但我确实需要把 JComboBox 放在那里,否则我无法完成这个项目。任何有关如何解决此问题的帮助将不胜感激。代码如下:
package userInterface;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class AddSpend extends JFrame {
public AddSpend(){
setTitle("Add New Spend");
setSize(300,200);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLayout(new GridBagLayout());
create();
}
private void create(){
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.LINE_END;
add(new JLabel("Category: "), c);
c.gridy++;
add(new JLabel("Amount: "), c);
c.gridy++;
add(new JLabel("Date: "), c);
c.gridx = 1;
c.gridy = 0;
c.anchor = GridBagConstraints.LINE_START;
JComboBox<String> category = new JComboBox<String>();
category.addItem("Test 1");
category.addItem("Test 2");
category.addItem("Test 3");
add(category, c);
c.gridy++;
JTextField amount = new JTextField();
add(amount, c);
c.gridy++;
JTextField date = new JTextField();
add(date, c);
c.gridy++;
JButton today = new JButton("Today");
today.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Calendar now = Calendar.getInstance();
date.setText((now.get(Calendar.MONTH) + 1) + "/" + now.get(Calendar.YEAR));
}
});
today.setFont(today.getFont().deriveFont(7.0f));
today.setPreferredSize(new Dimension(30,15));
add(today, c);
c.gridy++;
JButton add = new JButton("Add Spend");
add(add, c);
}
}
【问题讨论】:
标签: java swing jframe jtextfield gridbaglayout