Я имею проблему отображения последнего JComboBox, я использую GridBagLayout все выглядит, как я хочу, чтобы это последний компонент с именами cat1, CAT2 и CAT3JComboBox не появляется в GridBagLayout
Я пытался добавить, за исключением a JLabel
в конец и установка его .weightx
как .REMAINDER
, но даже эта метка не отображается.
Я попытался изменить свойство .gridwidth
, но не напрасно.
Я также попытался добавить другие поля со списком, но они все еще не появляются, даже если они появляются в их первых появлениях, поэтому я предполагаю, что это некоторая ошибка счетчика столбцов, но я не установил ни один из них, даже знаю, как это установлено.
Я до сих пор немного новичок в GridBaGLayout()
, и я все еще не мог понять свою проблему, Я пробовал искать другие коды и ответы в Интернете, но я просто не мог найти свою ошибку! Вы можете мне помочь?
P.S. Я просто поставил основной метод, чтобы вы могли тестировать, это вызвано из другого класса, поэтому у него могут быть некоторые ошибки запуска (надеюсь, нет);
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class selectioins implements ActionListener
{
JFrame f;
JPanel p;
JButton searchB, viewB, newB;
JTextField search1F,search2F,search3F;
JComboBox logic1,logic2,logic3, cart1,cart2,cart3;
String[] carterias = {"First name:","Last name"};
String[] logic = {"Disabled","AND","OR","NOT"};
char Type = 'c';
public static void main(String[] args)
{
new selectioins('c');
}
public selectioins(char type)
{
//##### Initialization #####
String head = "";
if(type=='c'){ head = "Customer"; Type = 'c';}
if(type=='e'){ head = "Employee"; Type = 'e';}
f = new JFrame(head +" Search");
p = new JPanel();
search1F = new JTextField();
search2F = new JTextField();
search3F = new JTextField();
searchB = new JButton("Search");
newB = new JButton("New entry");
logic1 = new JComboBox(logic);
logic2 = new JComboBox(logic);
logic3 = new JComboBox(logic);
cart1 = new JComboBox(carterias);
cart2 = new JComboBox(carterias);
cart3 = new JComboBox(carterias);
searchB.addActionListener(this);
newB.addActionListener(this);
//##### layout settings #####
p.setLayout(new GridBagLayout());
GridBagConstraints gbc4f = new GridBagConstraints();
gbc4f.fill = GridBagConstraints.BOTH;
gbc4f.anchor = GridBagConstraints.NORTHWEST;
gbc4f.gridwidth = GridBagConstraints.REMAINDER;
gbc4f.weightx = 0.75;
gbc4f.insets = new Insets(1, 1, 1, 1);
GridBagConstraints gbc4l = (GridBagConstraints) gbc4f.clone();
gbc4l.weightx = 0.1;
gbc4l.gridwidth = 1;
GridBagConstraints gbc4cmb = (GridBagConstraints) gbc4f.clone(); //ComboBox
gbc4cmb.anchor = GridBagConstraints.NORTHWEST;
gbc4cmb.insets = new Insets(1, 1, 1, 1);
gbc4cmb.gridwidth = GridBagConstraints.RELATIVE;
//##### adding components #####
p.add(new JLabel("Search for:"),gbc4l); p.add(search1F,gbc4cmb);
p.add(new JLabel("in:"),gbc4l); p.add(cart2,gbc4cmb);
p.add(new JLabel(" 1"),gbc4f); p.add(logic1,gbc4f);
p.add(new JLabel("That has:"),gbc4l); p.add(search2F,gbc4cmb);
p.add(new JLabel("in:"),gbc4l); p.add(cart2,gbc4cmb);
p.add(new JLabel(" 11 "),gbc4f); p.add(logic2,gbc4f);
p.add(new JLabel("Also has:"),gbc4l); p.add(search3F,gbc4cmb);
p.add(new JLabel("in:"),gbc4l); p.add(cart3,gbc4cmb);
p.add(new JLabel("3 "),gbc4f);
p.add(searchB,gbc4cmb);
p.add(newB,gbc4cmb);
//##### Containers finalizing #####
f.add(p,BorderLayout.NORTH);
//f.setResizable(false);
f.setBounds(600,400,400,300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{}
}
Не совсем ответ на ваш вопрос, но я предполагаю, что вы бы лучше не с помощью «МиГ Layout», что делает макеты в JFC/Swing гораздо проще ... Http: //www.miglayout. com/(... то есть, если вы не вынуждены использовать GridBagLayout, потому что в вашем проекте не разрешено использование сторонних библиотек или вы работаете над какой-то домашней задачей и не имеете другого выбора .....) – headcr4sh
@ headcr4sh Я в этом вхожу, и я хочу сначала получить GridBagLayout .. а также у меня нет много времени, чтобы переучивать другого менеджера макетов, так как это проект из-за менее чем за 48 часов, и все еще есть вещи для быть финализированным. но спасибо за рецензию, я планирую скоро ее изучить. – bakz
вы уверены, что не используете одни и те же GBC? Gbc4cmb выглядит так же, как и для добавления search3F. –