Java应用程序无法响应代码更改

时间:2018-05-10 06:02:29

标签: java eclipse jcombobox

我正在尝试在java中实现一个简单的接口,但它对代码更改没有响应,例如为组合框设置新位置不会改变它的位置。 我的代码是:

public class Interfata extends JFrame
{
    static JFrame window= new JFrame("Aplicatie bancara");
    static JButton persoana_button= new JButton("PERSOANE");
    static JButton cont_button= new JButton("CONTURI");
    public static void main( String[] args )
    {

        window.setBounds(10, 10, 300, 200);
        JPanel panel_main= new JPanel();
        window.add(panel_main);

        cont_button.setBounds(90, 150, 100, 70);
        panel_main.add(cont_button);
        cont_button.addActionListener(new ActionListener(){ 
            public void actionPerformed(ActionEvent arg0) { 
                 JFrame view = new JFrame("Accounts");
                 JPanel pane= new JPanel();
            String[] account_type=
                {"savings", "spending"};
            JComboBox petList = new JComboBox(account_type);
            petList.setSelectedIndex(1);
            petList.addActionListener(new ActionListener()
                    {
                public void actionPerformed(ActionEvent arg0) {
                    // TODO Auto-generated method stub

                }
                    });
            petList.setSize(50, 50);
            petList.setLocation(400,320);   
                pane.add(petList);
                view.setDefaultCloseOperation(view.DISPOSE_ON_CLOSE);
                view.setBounds(10,10,400,400);
                view.add(pane);
                view.setVisible(true);

            }});


        window.setVisible(true);

如代码所示,我的窗口设置为大小,大约400x400,我已经将位置设置为400,320的组合框,它应该将它放在框架之外,但它仍然卡在中间。 enter image description here

我正在使用eclipse neon oxygen。,并在Maven项目中编码。 在更改我的代码后,我收到了这条消息:

  

某些代码更改无法热交换到正在运行的虚拟机

我尝试重新启动eclipse,更改工作区位置并完全启动项目。然而,它仍然不会移动。

2 个答案:

答案 0 :(得分:0)

您有一个正在运行的程序副本,它是在您进行更改之前启动的。此运行副本与Eclipse IDE的过程不同。

您需要停止此正在运行的副本,然后重新启动在磁盘上编译的新副本,但由于某种原因,无法将其修补到您已启动的副本中。

要查找正在运行的副本,您可能需要使用操作系统的进程列表并找到正确的程序(通常在程序命令行中包含单词' java')以终止。

一旦你杀了那个程序,你应该可以重新启动它,然后你应该看到上次成功编译时保存到磁盘的更改。

答案 1 :(得分:0)

这主要与LayoutManager相关:

  1. 您已向面板添加了组合框
  2. JPanel的默认布局为FlowLayout
  3. FlowLayout默认添加控件,使用容器的中心对齐方式。
  4. FlowLayout不遵守setLocation(x,y),因此您看不到任何效果
  5. 使用现有代码,如果将pane's布局设置为nullpane.setLayout(null),您肯定会获得所需的结果,但 null布局不是推荐的 即可。也许您可以考虑使用其他layouts SpringLayoutGroupLayout但这需要IDE,因为手动编码会很麻烦。