我有一个gui,它是一个网格布局,有6行4列,顺序应该是:label-radiobutton-radiobutton-combobox
这对于第一行是成功的。然而之后的每一行都是一团糟。请参考图形用户界面的图像。
请忽略注解代码,因为我将在稍后完成gui布局后设置可见性。谢谢。
JFrame frame = new JFrame("Zoho DNC List Updater");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(height, width);
// creating menu bar
JMenuBar mb = new JMenuBar();
// mb.setLayout(new FlowLayout());
JMenu m1 = new JMenu("File");
JMenu m2 = new JMenu("Help");
mb.add(m1);
mb.add(m2);
JMenuItem contact = new JMenuItem("Contact Us");
JMenuItem help = new JMenuItem("Help");
JMenuItem openFile = new JMenuItem("Open File");
JMenuItem saveFile = new JMenuItem("Save File");
JMenuItem newWindow = new JMenuItem("New window");
m2.add(contact);
m2.add(help);
m1.add(openFile);
m1.add(saveFile);
m1.add(newWindow);
JPanel panel = new JPanel(); // the panel is not visible in output
JLabel label = new JLabel("Update Records");
// JTextField tf = new JTextField(10); // accepts upto 10 characters
JButton send = new JButton("Update");
JButton reset = new JButton("Quit");
panel.add(label); // Components Added using Flow Layout
// panel.add(tf);
panel.add(send);
panel.add(reset);
JPanel panel2 = new JPanel(new GridLayout(6, 4));
JRadioButton radio1 = new JRadioButton("Yes");
JRadioButton radio2 = new JRadioButton("No");
JLabel custom = new JLabel("Customize Call Report?");
ButtonGroup btnGrp = new ButtonGroup();
radio1.setBounds(120, 30, 120, 50);
radio2.setBounds(120, 30, 120, 50);
custom.setBounds(120, 30, 120, 50);
btnGrp.add(radio1);
btnGrp.add(radio2);
JComboBox campsList = new JComboBox(camps);
campsList.setSelectedIndex(5);
campsList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent r){
JComboBox cb = (JComboBox)r.getSource();
String campName = (String)cb.getSelectedItem();
}
});
JComboBox inboundsList = new JComboBox(inbounds);
inboundsList.setSelectedIndex(5);
inboundsList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent r){
JComboBox cb = (JComboBox)r.getSource();
String campName = (String)cb.getSelectedItem();
}
});
JComboBox statList = new JComboBox(stat);
statList.setSelectedIndex(5);
statList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent r){
JComboBox cb = (JComboBox)r.getSource();
String campName = (String)cb.getSelectedItem();
}
});
JComboBox groupList = new JComboBox(groups);
groupList.setSelectedIndex(5);
groupList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent r){
JComboBox cb = (JComboBox)r.getSource();
String campName = (String)cb.getSelectedItem();
}
});
JComboBox lisList = new JComboBox(lis);
lisList.setSelectedIndex(5);
lisList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent r){
JComboBox cb = (JComboBox)r.getSource();
String campName = (String)cb.getSelectedItem();
}
});
ButtonGroup btnGrp1 = new ButtonGroup();
JRadioButton campaignY = new JRadioButton("Yes");
JRadioButton campaignN = new JRadioButton("No");
JLabel campaign = new JLabel("Select all campaigns?");
campaignY.setBounds(120, 30, 120, 50);
campaignN.setBounds(120, 30, 120, 50);
btnGrp1.add(campaignY);
btnGrp1.add(campaignN);
ButtonGroup btnGrp2 = new ButtonGroup();
JRadioButton inboundY = new JRadioButton("Yes");
JRadioButton inboundN = new JRadioButton("No");
JLabel inbound = new JLabel("Select all inbound groups?");
btnGrp2.add(inboundY);
btnGrp2.add(inboundN);
ButtonGroup btnGrp3 = new ButtonGroup();
JRadioButton statusY = new JRadioButton("Yes");
JRadioButton statusN = new JRadioButton("No");
JLabel status = new JLabel("Select all call statuses?");
btnGrp3.add(statusY);
btnGrp3.add(statusN);
statusY.setBounds(120, 30, 120, 50);
statusN.setBounds(120, 30, 120, 50);
ButtonGroup btnGrp4 = new ButtonGroup();
JRadioButton userGroupY = new JRadioButton("Yes");
JRadioButton userGroupN = new JRadioButton("No");
JLabel userGroup = new JLabel("Select all user groups?");
btnGrp4.add(userGroupY);
btnGrp4.add(userGroupN);
userGroupY.setBounds(120, 30, 120, 50);
userGroupN.setBounds(120, 30, 120, 50);
ButtonGroup btnGrp5 = new ButtonGroup();
JRadioButton listsY = new JRadioButton("Yes");
JRadioButton listsN = new JRadioButton("No");
JLabel lists = new JLabel("Select all lists?");
btnGrp5.add(listsY);
btnGrp5.add(listsN);
panel2.add(custom);
panel2.add(radio1);
panel2.add(radio2);
campsList.setVisible(true);
panel2.add(campsList);
panel2.add(campaign);
panel2.add(campaignY);
panel2.add(campaignN);
inboundsList.setVisible(true);
panel2.add(inboundsList);
// campaign.setVisible(false);
// campaignY.setVisible(false);
// campaignN.setVisible(false);
panel2.add(status);
panel2.add(statusY);
panel2.add(statusN);
panel2.add(statList);
// status.setVisible(false);
// statusY.setVisible(false);
// statusN.setVisible(false);
panel2.add(inbound);
panel2.add(inboundY);
panel2.add(inboundN);
panel2.add(inboundsList);
// inbound.setVisible(false);
// inboundN.setVisible(false);
// inboundY.setVisible(false);
panel2.add(userGroup);
panel2.add(userGroupY);
panel2.add(userGroupN);
panel2.add(groupList);
// userGroup.setVisible(false);
// userGroupN.setVisible(false);
// userGroupY.setVisible(false);
panel2.add(lists);
panel2.add(listsY);
panel2.add(listsN);
panel2.add(lisList);
// lists.setVisible(false);
// listsN.setVisible(false);
// listsY.setVisible(false);
1条答案
按热度按时间bf1o4zei1#
所以,有两个问题。
首先,当列和行属性都被指定时,列值是ignore,这可以在javadocs中找到
当构造函数或setrows和setcolumns方法将行数和列数都设置为非零值时,将忽略指定的列数。相反,列数是根据指定的行数和布局中组件的总数来确定的。
所以,在你的情况下,我把它改成
JPanel panel2 = new JPanel(new GridLayout(0, 4));
其次,一个示例组件只能驻留在一个父级中一次。你在添加
inboundsList
两次,这样做的效果是首先将其从容器中移除,然后将其重新添加到新位置。您需要创建的的新示例
JComoboBox
使用相同的数据模型