有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JButton位置不起作用

我是java新手,但了解swing的基础知识和大多数库,我想知道为什么我最近制作的这个实践程序没有将JButton定位在正确的坐标上。我被难住了。这是源代码

package game;

import java.awt.Color;
import java.awt.Image;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JButton;


public class TitleScreen extends JFrame
{
JFrame window = new JFrame();
JPanel screen = new JPanel();
JButton start = new JButton("Play Game");
JButton end = new JButton("Quit Game");
ImageIcon thing = new ImageIcon("lol.png");
Image pic = thing.getImage();

public TitleScreen()
{
 window.setTitle("Test");
 window.setSize(500,500);
 window.setBackground(Color.BLUE);
 window.setLocationRelativeTo(null);
 window.setResizable(false);
 window.setVisible(true);
}

public void canvas()
{
screen.setLayout(null);
window.add(screen);
start.setBounds(250,250,100,50);   
screen.add(start);  
}

public static void main(String[] args) 
{
TitleScreen TitleScreen = new TitleScreen();    
}

共 (2) 个答案

  1. # 1 楼答案

    一些要点:


    应该是这样的:

    public void canvas() {
        screen.setBackground(Color.BLUE);
        screen.add(start);
        window.add(screen);             
    }
    
    public TitleScreen() {
        ...
        canvas();
        window.setVisible(true); 
    }
    
    public static void main(String[] args) {        
        SwingUtilities.invokeLater(new Runnable() {
    
            @Override
            public void run() {
                TitleScreen TitleScreen = new TitleScreen();
            }
        });
    }
    
  2. # 2 楼答案

    这是因为您没有调用canvas方法,这就是它没有显示的原因

    解决方案:

     public TitleScreen()
    
    {
     window.setTitle("Test");
     window.setSize(500,500);
     window.setLocationRelativeTo(null);
     screen.setBackground(Color.BLUE);
     window.setVisible(true);
     canvas();
    }