java, JList 位置
java, JList location
我卡在这里,但我不能将布局中的 JList 移动到左上角-corner.Im 试图使用 list.setLocation();
将列表移动到左上角但似乎那不是很好。谢谢!
public class JList_ extends JFrame {
private JList list;
private static String[] colorname = {"black", "blue", "red", "white"};
private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED,
Color.WHITE};
public JList_() {
super("titile");
setLayout(new FlowLayout());
list = new JList(colorname);
list.setVisibleRowCount(10);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLocation();
add(new JScrollPane(list));
list.addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
getContentPane().setBackground(colors[list.getSelectedIndex()]);
}
}
);
}
}
setLocation()
函数接受两个整数作为参数。尝试 list.setLocation(0,0)
另一个重载函数将 Point
对象作为参数。它将组件放置在父级的指定位置。
此外,您将 JList
放在 JScrollPane
中并将其添加到框架中。因此,尝试为 JScrollPane
创建一个单独的对象,然后将其位置设置为 0,0.
JScrollPane myScrollPane = new JScrollPane(list);
add(myScrollPane);
myScrollPane.setLocation(0,0);
上面的代码片段应该适合你。
您可以对 JFrame 使用 setLayout(null)。然后您可以使用 setBounds() 方法根据需要在 JFrame 上的任何位置设置列表位置。
只需将布局中的对齐方式设置为 LEFT。
layout.setAlignment(FlowLayout.LEFT);
使用您的代码的完整工作示例:
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class ListLocation extends JFrame {
private JList<String> list;
private static String[] colorname = {"black", "blue", "red", "white"};
private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED, Color.WHITE};
public ListLocation() {
super("title");
FlowLayout layout = new FlowLayout();
layout.setAlignment(FlowLayout.LEFT);
list = new JList<String>(colorname);
list.setVisibleRowCount(10);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setLayout(layout);
add(list);
list.addListSelectionListener(
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
getContentPane().setBackground(colors[list.getSelectedIndex()]);
}
}
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 800);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
new ListLocation();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
中有关 FlowLayout
的更多信息
我卡在这里,但我不能将布局中的 JList 移动到左上角-corner.Im 试图使用 list.setLocation();
将列表移动到左上角但似乎那不是很好。谢谢!
public class JList_ extends JFrame {
private JList list;
private static String[] colorname = {"black", "blue", "red", "white"};
private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED,
Color.WHITE};
public JList_() {
super("titile");
setLayout(new FlowLayout());
list = new JList(colorname);
list.setVisibleRowCount(10);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLocation();
add(new JScrollPane(list));
list.addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
getContentPane().setBackground(colors[list.getSelectedIndex()]);
}
}
);
}
}
setLocation()
函数接受两个整数作为参数。尝试 list.setLocation(0,0)
另一个重载函数将 Point
对象作为参数。它将组件放置在父级的指定位置。
此外,您将 JList
放在 JScrollPane
中并将其添加到框架中。因此,尝试为 JScrollPane
创建一个单独的对象,然后将其位置设置为 0,0.
JScrollPane myScrollPane = new JScrollPane(list);
add(myScrollPane);
myScrollPane.setLocation(0,0);
上面的代码片段应该适合你。
您可以对 JFrame 使用 setLayout(null)。然后您可以使用 setBounds() 方法根据需要在 JFrame 上的任何位置设置列表位置。
只需将布局中的对齐方式设置为 LEFT。
layout.setAlignment(FlowLayout.LEFT);
使用您的代码的完整工作示例:
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class ListLocation extends JFrame {
private JList<String> list;
private static String[] colorname = {"black", "blue", "red", "white"};
private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED, Color.WHITE};
public ListLocation() {
super("title");
FlowLayout layout = new FlowLayout();
layout.setAlignment(FlowLayout.LEFT);
list = new JList<String>(colorname);
list.setVisibleRowCount(10);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setLayout(layout);
add(list);
list.addListSelectionListener(
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
getContentPane().setBackground(colors[list.getSelectedIndex()]);
}
}
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 800);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
new ListLocation();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
中有关 FlowLayout
的更多信息