Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每当发生更新时,JList位置将重置为默认值_Java_Swing_Jlist - Fatal编程技术网

Java 每当发生更新时,JList位置将重置为默认值

Java 每当发生更新时,JList位置将重置为默认值,java,swing,jlist,Java,Swing,Jlist,list接受来自Action1的输入。但是,每当向列表中添加新元素时,列表的位置将移回默认的中上位置 调整帧的大小时也会发生这种情况,因此作为临时修复,我会修改行frame.setresizeable(false),但我不希望这是永久性的 我如何解决这两个问题 导入静态java.lang.String.*; 导入javax.swing.*; 导入java.awt.*; 导入java.awt.event.*; 导入java.awt.event.ActionListener; 公开班级名单 {

list
接受来自
Action1
的输入。但是,每当向列表中添加新元素时,列表的位置将移回默认的
中上位置

调整帧的大小时也会发生这种情况,因此作为临时修复,我会修改行
frame.setresizeable(false)
,但我不希望这是永久性的

我如何解决这两个问题

导入静态java.lang.String.*;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.awt.event.ActionListener;
公开班级名单
{
静态字符串newUrl;
静态DefaultListModel模型=新的DefaultListModel();
静态int-listXCoord=650;
静态int-listYCoord=10;
公共静态void createGUI()
{
JFrame=新JFrame();
frame.setVisible(true);
框架。设置尺寸(800600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setresizeable(false);
JPanel面板=新的JPanel();
框架。添加(面板);
JButton addurl=新JButton(“添加URL”);
panel.add(addurl);
addurl.addActionListener(新Action1());
JButton remurl=新JButton(“删除URL”);
panel.add(remurl);
//模型。附录(“一”);
//模型.附录(“二”);
//模型。附录(“三”);
JList列表=新的JList(型号);
setCellRenderer(新的DefaultListCellRenderer());
list.setVisible(true);
list.setLocation(listXCoord、listYCoord);
挫折背景(新颜色(186203250));
//列表。设置位置(650,10);
面板。添加(列表);
列表。设置大小(130540);
}
静态类Action1实现ActionListener
{        
已执行的公共无效操作(操作事件e)
{
newUrl=JOptionPane.showInputDialog(“输入要启动的URL”);
模型添加元素(newUrl);
}
}   
公共静态void main(字符串[]args)
{
createGUI();
} 
}

基本上,您正在与布局管理器(
Flowlayout
)进行斗争,并且失败了。将新元素添加到
JList
时,容器层次结构将重新验证,这将导致布局管理器重新布局其容器的内容

基本的解决方案是使用不同的布局,但是,
JFrame
使用了
BorderLayout
,因此不必将
JList
添加到
JPanel
中,只需将其添加到框架的
EAST
位置即可

导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.DefaultListCellRenderer;
导入javax.swing.DefaultListModel;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JList;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公开班级名单{
静态字符串newUrl;
静态DefaultListModel模型=新的DefaultListModel();
静态int-listXCoord=650;
静态int-listYCoord=10;
公共静态void createGUI(){
JFrame=新JFrame();
框架设置尺寸(800600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel面板=新的JPanel();
框架。添加(面板);
JButton addurl=新JButton(“添加URL”);
panel.add(addurl);
addurl.addActionListener(新Action1());
JButton remurl=新JButton(“删除URL”);
panel.add(remurl);
//模型。附录(“一”);
//模型.附录(“二”);
//模型。附录(“三”);
JList列表=新的JList(型号);
setCellRenderer(新的DefaultListCellRenderer());
list.setVisible(true);
list.setLocation(listXCoord、listYCoord);
挫折背景(新颜色(186203250));
//列表。设置位置(650,10);
添加(新的JScrollPane(列表),BorderLayout.EAST);
frame.setVisible(true);
}
静态类Action1实现ActionListener{
已执行的公共无效操作(操作事件e){
newUrl=JOptionPane.showInputDialog(“输入要启动的URL”);
模型添加元素(newUrl);
}
}
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
例如printStackTrace();
}
createGUI();
}
});
}
}
有关详细信息,请参见和

最后,您还应该调用
setVisible
last,在将所有组件添加到框架后,这将减少某些组件在您认为应该显示时无法显示的可能性


JList
还将受益于
JScrollPane
中包含的内容。有关更多详细信息,请参见和

尝试使用布局管理器,而不是
FlowLayout
JList
也应包含在
JScrollPane
中。看一看,想知道更多的细节,你在和版图管理员较量,你到底是怎么回答得这么快的?当我掌握了一半的代码时,你总是比我先发布一个文档化的答案和一个可运行的示例!该死我钦佩你:)MadpaiSenpai lolbtw你有一个打字错误
,一些旅游组件
(旅游->你的)@Frakcool Fat fingers;)-另外,我使用了很多模板,还有一个小程序,里面有“常用引号”,这使得生成答案变得更加容易…我所需要的就是k
import static java.lang.String.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener;

public class lists 
{

static String newUrl;
static DefaultListModel<String> model = new DefaultListModel<String>();
static int listXCoord = 650;
static int listYCoord = 10;

public static void createGUI()
{

    JFrame frame = new JFrame();
    frame.setVisible(true);
    frame.setSize(800,600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);

    JPanel panel = new JPanel();
    frame.add(panel);

    JButton addurl = new JButton("Add URL");
    panel.add(addurl);
    addurl.addActionListener(new Action1());
    JButton remurl = new JButton("Remove URL");
    panel.add(remurl);


    //model.addElement("one");
    //model.addElement("two");
    //model.addElement("three");

    JList list = new JList<String>(model);
    list.setCellRenderer(new DefaultListCellRenderer());
    list.setVisible(true);
    list.setLocation(listXCoord, listYCoord);
    list.setBackground(new Color(186, 203, 250));
    //list.setLocation(650, 10);


    panel.add(list);
    list.setSize(130, 540);
}
static class Action1 implements ActionListener
{        
    public void actionPerformed (ActionEvent e) 
    {

        newUrl = JOptionPane.showInputDialog("Enter the URL to be Launched");
        model.addElement(newUrl);
    }
}   
public static void main(String[] args) 
{

    createGUI();

} 
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Lists {

    static String newUrl;
    static DefaultListModel<String> model = new DefaultListModel<String>();
    static int listXCoord = 650;
    static int listYCoord = 10;

    public static void createGUI() {

        JFrame frame = new JFrame();
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        frame.add(panel);

        JButton addurl = new JButton("Add URL");
        panel.add(addurl);
        addurl.addActionListener(new Action1());
        JButton remurl = new JButton("Remove URL");
        panel.add(remurl);

        //model.addElement("one");
        //model.addElement("two");
        //model.addElement("three");
        JList list = new JList<String>(model);
        list.setCellRenderer(new DefaultListCellRenderer());
        list.setVisible(true);
        list.setLocation(listXCoord, listYCoord);
        list.setBackground(new Color(186, 203, 250));
        //list.setLocation(650, 10);

        frame.add(new JScrollPane(list), BorderLayout.EAST);

        frame.setVisible(true);
    }

    static class Action1 implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            newUrl = JOptionPane.showInputDialog("Enter the URL to be Launched");
            model.addElement(newUrl);
        }
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                createGUI();
            }
        });

    }
}