我写了简单的java应用程序。一个包含3个元素的窗口(JFrame ramka):JButton,JComboBox和容器(包含JList)。 我想重新排列这些元素的位置,并导致问题。我想使用GridBagLayout,但是当我这样做时,我的容器消失了(或者它是1px大--.-),setSize对JComboBox也可以正常工作。而当我不使用任何布局时,显示带有JList的容器,但调整JComboBox的大小并不起作用,并且所有内容都重叠在一起......通常它看起来像......它并不是全部。GridBagLayout,正在消失JList
这里来了我的问题:如何,以及什么样的布局用于重新组织我的成员和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有与显示,同时使用布局模型容器的问题...
当您在滚动窗格添加组件,您还需要设置视口。 您可以使用 sp.setViewPortView(Component)方法并尝试。 – pratikch
为什么要在滚动窗格中放入JList? – ChadNC
在我的理解JList默认情况下没有scrollPane。因此,为了增强JList并允许滚动,我们需要将JList添加到ScrollPane。 – pratikch