我写了简单的java应用程序。一个窗口(JFrame ramka)包含 3 个元素:JButton、JComboBox 和容器(其中包含 JList)。我想重新排列这些元素的位置,这会导致问题。我想使用 GridBagLayout,但是当我这样做时,我的容器消失了(或者它是 1px 大 -.-),setSize 也适用于 JComboBox。当我不使用任何布局时,会显示带有 JList 的容器,但是调整 JComboBox 的大小不起作用,并且一切都在重叠......一般看起来......它看起来一点也不。
我的问题来了:如何以及使用什么布局来重新组织我的组件和 JFrame 的位置?我使用 NetBeans 7.2
package layouttest;
import java.awt.*;
import javax.swing.*;
import javax.swing.JList;
import java.util.ArrayList;
import java.awt.*;
import java.awt.GridBagLayout;
import java.awt.event.*;
import javax.swing.*;
public class Layouttest {
public static void main(String[] args) {
JFrame ramka = new JFrame();
//ramka.setLayout(new GridLayout(4, 3));
//ramka.setLayout(new GridBagLayout());
String [] test = {"cos", "cos2", "cos3", "cos4", "cos5", "cos6", "cos7", "cos8", "cos9","cos10", "cos11", "cos12"};
ArrayList<String> myList = new ArrayList<String>();
myList.add("cos");
myList.add("cos2");
myList.add("cos3");
myList.add("cos4");
myList.add("cos5");
myList.add("cos6");
myList.add("cos7");
myList.add("cos8");
myList.add("cos9");
myList.add("cos10");
GridBagConstraints ogranicznik = new GridBagConstraints();
ogranicznik.insets = new Insets(5, 10, 5, 5);
ogranicznik.gridx = 0;
ogranicznik.gridy = 0;
Container c = new Container();
ramka.setSize(500, 500);
c.setSize(100,100);
JList lista = new JList(myList.toArray());
JScrollPane sp = new JScrollPane(lista);
JTextField txt = new JTextField("cos");
c.add(sp);
sp.setSize(100,100);
lista.setSize(100, 100);
ramka.add(c);
ramka.add(txt);
String[] dropBoxList = {"uno", "due", "tre"};
final JComboBox listaRozwijalna = new JComboBox(dropBoxList);
listaRozwijalna.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXX");
listaRozwijalna.revalidate();
listaRozwijalna.repaint();
ramka.add(listaRozwijalna);
c.revalidate();
c.repaint();
ramka.revalidate();
ramka.setVisible(true);
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// TODO code application logic here
}
}
@EDIT我发现java在使用布局模型时显示容器有问题......