0
我想获得这两个元素到框架使用GridBagLayout,但只要我将JComboBox添加到GridBagLayout,然后将其添加到框架,JTextFields成为宽度很短,我不知道为什么或如何解决它。当我将JComboBox取出时,它工作得很好,但我确实需要在那里有JComboBox,否则我无法完成该项目。任何帮助如何解决这个问题将不胜感激。下面是代码:问题JTextField和JComboBox在同一个GridBagLayout在Java
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);
}
}