Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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
javagui不一致_Java_Swing_User Interface - Fatal编程技术网

javagui不一致

javagui不一致,java,swing,user-interface,Java,Swing,User Interface,大家好,我正在尝试为游戏创建这个菜单,当我运行代码时,它是非常随意的。在同一台电脑上,同一个屏幕,同一个操作系统,一切都一样,我可能会运行代码,菜单也很好。然后我再运行一次,发现图片不正确或者图片消失了等等。我已尝试更改contentPane.add的顺序,但我没有主意。还可能是什么?谢谢 public static int type(){ // Create a "clickable" image icon int i =0; Color c = new Colo

大家好,我正在尝试为游戏创建这个菜单,当我运行代码时,它是非常随意的。在同一台电脑上,同一个屏幕,同一个操作系统,一切都一样,我可能会运行代码,菜单也很好。然后我再运行一次,发现图片不正确或者图片消失了等等。我已尝试更改contentPane.add的顺序,但我没有主意。还可能是什么?谢谢

public static int type(){
      // Create a "clickable" image icon

    int i =0;
    Color c = new Color (0,0,0);
       ImageIcon icon = new ImageIcon("images/mike_main.png");
       JLabel label = new JLabel(icon);
       ImageIcon icon1 = new ImageIcon("images/igal_main.png");
       JLabel label1 = new JLabel(icon1);
       JPanel contentPane = new JPanel();

       JLabel label3 = new JLabel("Choose your character!");
       JLabel mike_l = new JLabel("Mike");
       JLabel mike_info = new JLabel("<html>Speed: 10<br>Range: 7</html>");
       JLabel igal_l = new JLabel("Igal");
       JLabel igal_info = new JLabel("<html>Speed: 7<br>Range: 10</html>");


       label3.setBounds(600,100,2000,100);
       label3.setFont(new Font("Serif", Font.BOLD, 56));
       label3.setForeground(Color.WHITE);


       contentPane.setOpaque(true);
       contentPane.setBackground(c);
       contentPane.setLayout(null);
       final JFrame frame = new JFrame("My Window");
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.getContentPane().add(label);
       frame.setTitle("The Ultimate Game");
       frame.setExtendedState(frame.MAXIMIZED_BOTH);
       frame.pack();
       frame.setVisible(true);
       label.setBounds(400,400,300,600);
       mike_l.setBounds(500,330,1000,100);
       mike_info.setBounds(750,500,1000,100);
       //label.setLocation(50, 50);
       label1.setBounds(1200,400,300,600);
       igal_l.setBounds(1300,330,1000,100);
       igal_info.setBounds(1550,500,1000,100);
       //label1.setLocation(250, 250);
       mike_l.setFont(new Font("Serif", Font.BOLD, 26));
       mike_l.setForeground(Color.WHITE);
       mike_info.setFont(new Font("Serif", Font.BOLD, 26));
       mike_info.setForeground(Color.WHITE);
       igal_l.setFont(new Font("Serif", Font.BOLD, 26));
       igal_l.setForeground(Color.WHITE);
       igal_info.setFont(new Font("Serif", Font.BOLD, 26));
       igal_info.setForeground(Color.WHITE);
       contentPane.add(label);
       contentPane.add(label1);
       contentPane.add(label3);
       contentPane.add(mike_l);
       contentPane.add(mike_info);
       contentPane.add(igal_l);
       contentPane.add(igal_info);

       frame.setContentPane(contentPane);
       label.addMouseListener(new MouseAdapter() {
           public void mouseClicked(MouseEvent me) {
             System.out.println("CLICKED");
             frame.setTitle("Mike");
           }
         });
       label1.addMouseListener(new MouseAdapter() {
           public void mouseClicked(MouseEvent me) {
             System.out.println("CLICKED");
             frame.setTitle("Igal");
           }
         });
       while (i==0){
       //System.out.println("I am here");

       String s = frame.getTitle();
       System.out.println(s);
       if (s.equals("Mike")){
        i =1;
       }
       else if(s.equals("Igal")){
        i = 2;
       }
       // Add it to a frame.


    }
       System.out.println("im out");
       frame.setVisible(false);
       return i;

   }
publicstaticint-type(){
//创建一个“可点击”的图像图标
int i=0;
颜色c=新颜色(0,0,0);
ImageIcon=newImageIcon(“images/mike_main.png”);
JLabel标签=新的JLabel(图标);
ImageIcon icon1=新的ImageIcon(“images/igal_main.png”);
JLabel标签1=新的JLabel(icon1);
JPanel contentPane=新的JPanel();
JLabel label3=新的JLabel(“选择你的角色!”);
JLabel mike_l=新JLabel(“mike”);
JLabel mike_info=新JLabel(“速度:10
范围:7”); JLabel igal_l=新JLabel(“igal”); JLabel igal_info=新JLabel(“速度:7
范围:10”); 标签3.立根(60010020000100); label3.setFont(新字体(“衬线”,Font.BOLD,56)); 标签3.设置前景(颜色:白色); contentPane.set不透明(true); contentPane.挫折背景(c); contentPane.setLayout(null); 最终JFrame=新JFrame(“我的窗口”); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(标签); frame.setTitle(“终极游戏”); frame.setExtendedState(frame.MAXIMIZED_两者); frame.pack(); frame.setVisible(true); 标签.立根(400300600); mike_l.setBounds(500330100100); mike_信息setBounds(7505001000100); //标签。设置位置(50,50); 标签1.立根(1200400300600); igal_l.立根(130030100100); igal_信息立根(1550501000100); //标签1.设置位置(250250); mike_l.setFont(新字体(“衬线”,Font.BOLD,26)); mike_l.设置前景(颜色:白色); mike_info.setFont(新字体(“Serif”,Font.BOLD,26)); mike_信息设置前景(颜色:白色); igal_l.setFont(新字体(“衬线”,字体粗体,26)); igal_l.设置前景(颜色:白色); igal_info.setFont(新字体(“Serif”,Font.BOLD,26)); igal_信息设置前景(颜色:白色); contentPane.add(标签); contentPane.add(标签1); contentPane.add(label3); contentPane.add(mike_l); contentPane.add(mike_info); contentPane.add(igal_l); contentPane.add(igal_信息); frame.setContentPane(contentPane); label.addMouseListener(新的MouseAdapter(){ 公共无效mouseClicked(MouseEvent me){ System.out.println(“单击”); 帧。设置标题(“Mike”); } }); 标签1.addMouseListener(新的MouseAdapter(){ 公共无效mouseClicked(MouseEvent me){ System.out.println(“单击”); 框架。设置标题(“Igal”); } }); 而(i==0){ //System.out.println(“我在这里”); 字符串s=frame.getTitle(); 系统输出打印项次; 如果(s.equals(“Mike”)){ i=1; } 否则,如果(s.equals(“Igal”)){ i=2; } //将其添加到框架中。 } System.out.println(“im out”); frame.setVisible(假); 返回i; }
我认为问题在于,在对
帧进行更改之前,您正在调用
frame.setVisible(true)
。如果移动此项(可能还有
pack()
调用)并通过所有
add()
s,然后在
setContentFrame()
之后,窗口将更可靠地打开


至于对齐,这将归结为所有
setBounds()
调用。如果您不需要使用
setBounds()
,您可能应该查看并嵌套
JPanel
s,用于您设计的模块化部分(例如字符信息)。

为什么不设置布局内容窗格。setLayout(null);不要使用空布局。不要使用setBounds()。Swing设计用于布局管理器。然后,布局管理器将管理组件的大小/位置,以便它们在所有平台上看起来都很好。此外,在框架可见之前,应该将组件添加到框架中。Swing和AWT方法以及构造函数需要在AWT事件调度线程中执行。如果他们不是,你会有不可预测的行为。您在执行
循环时执行
,并且应用程序没有挂起,这一事实向我表明您没有使用AWT事件调度线程。实际上
pack()
毫无价值,因为您的内容框架中没有
LayoutManager
。使用
pack()
只会在窗口未最大化时影响窗口的默认大小,因此如果您打算这样做,则应将其移动,否则应将其删除。