有 Java 编程相关的问题?

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

添加JTextField后java破坏了GUI

我有一个奇怪的(?)问题我正在制作一个简单的GUI,当我添加一个JTextField(注释)时,会出现一些组件。我不知道为什么。此外,有时当我播放我的GUI时,一些组件会随机出现(第一次播放,一些按钮会出现,第二次播放-一些标签会出现),这太奇怪了!你知道为什么吗

    import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class matchWindow extends JFrame implements ActionListener{


    private static final long serialVersionUID = 1L;

    private JTextField tAttack;

    public matchWindow(){

        setTitle("Match");
        setSize(960, 720);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setLayout(null);

        JLabel lPlayers = new JLabel("Players list");
        lPlayers.setBounds(50, 10, 100, 30);
        lPlayers.setVisible(true);
        add(lPlayers);

        JLabel lAction = new JLabel("Action list");
        lAction.setBounds(250, 10, 100, 30);
        lAction.setVisible(true);
        add(lAction);

        JLabel lStats = new JLabel("Player statistics");
        lStats.setBounds(650, 10, 100, 30);
        lStats.setVisible(true);
        add(lStats);

        JLabel lAttack = new JLabel("Attack");
        lAttack.setBounds(175, 45, 50, 30);
        lAttack.setVisible(true);
        add(lAttack);


        JLabel lAttackPrec = new JLabel("Attack");
        lAttackPrec.setBounds(550, 45, 50, 30);
        lAttackPrec.setVisible(true);
        add(lAttackPrec);

        //tAttack = new JTextField();
        //tAttack.setBounds(550, 75, 50, 30);
        //tAttack.setVisible(true);
        //add(tAttack);



        JLabel lDefense = new JLabel("Defense");
        lDefense.setBounds(230, 45, 60, 30);
        lDefense.setVisible(true);
        add(lDefense);

        JLabel lDefensePrec = new JLabel("Defense");
        lDefensePrec.setBounds(620, 45, 60, 30);
        lDefensePrec.setVisible(true);
        add(lDefensePrec);

        JLabel lServe = new JLabel("Serve");
        lServe.setBounds(300, 45, 50, 30);
        lServe.setVisible(true);
        add(lServe);

        JLabel lServePrec = new JLabel("Serve");
        lServePrec.setBounds(690, 45, 50, 30);
        lServePrec.setVisible(true);
        add(lServePrec);

        JLabel lBlock = new JLabel("Block");
        lBlock.setBounds(355, 45, 50, 30);
        lBlock.setVisible(true);
        add(lBlock);


        JButton bY1 = new JButton("Y");
        bY1.setBounds(160, 75, 25, 25);
        bY1.setVisible(true);
        add(bY1);
        JButton bN1 = new JButton("N");
        bN1.setBounds(190, 75, 25, 25);
        bN1.setVisible(true);
        add(bN1);

        JButton bY2 = new JButton("Y");
        bY2.setBounds(225, 75, 25, 25);
        bY2.setVisible(true);
        add(bY2);
        JButton bN2 = new JButton("N");
        bN2.setBounds(255, 75, 25, 25);
        bN2.setVisible(true);
        add(bN2);

        JButton bY3 = new JButton("Y");
        bY3.setBounds(290, 75, 25, 25);
        bY3.setVisible(true);
        add(bY3);
        JButton bN3 = new JButton("N");
        bN3.setBounds(320, 75, 25, 25);
        bN3.setVisible(true);
        add(bN3);

        JButton bY4 = new JButton("Y");
        bY4.setBounds(350, 75, 25, 25);
        bY4.setVisible(true);
        add(bY4);
        JButton bN4 = new JButton("N");
        bN4.setBounds(380, 75, 25, 25);
        bN4.setVisible(true);
        add(bN4);





    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        matchWindow window = new matchWindow();
        window.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    }

}

共 (2) 个答案

  1. # 1 楼答案

        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;
    
        import javax.swing.JButton;
        import javax.swing.JFrame;
        import javax.swing.JLabel;
        import javax.swing.JTextField;
    
    
         public class matchWindow extends JFrame implements ActionListener{
    
    
         private static final long serialVersionUID = 1L;
    
         private JTextField tAttack;
    
        public matchWindow(){
    
        setTitle("Match");
        setSize(960, 720);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setLayout(null);
    
        JLabel lPlayers = new JLabel("Players list");
        lPlayers.setBounds(50, 10, 100, 30);
        lPlayers.setVisible(true);
        add(lPlayers);
    
        JLabel lAction = new JLabel("Action list");
        lAction.setBounds(250, 10, 100, 30);
        lAction.setVisible(true);
        add(lAction);
    
        JLabel lStats = new JLabel("Player statistics");
        lStats.setBounds(650, 10, 100, 30);
        lStats.setVisible(true);
        add(lStats);
    
        JLabel lAttack = new JLabel("Attack");
        lAttack.setBounds(175, 45, 50, 30);
        lAttack.setVisible(true);
        add(lAttack);
    
    
        JLabel lAttackPrec = new JLabel("Attack");
        lAttackPrec.setBounds(550, 45, 50, 30);
        lAttackPrec.setVisible(true);
        add(lAttackPrec);
    
        tAttack = new JTextField();
        tAttack.setBounds(500, 75, 50, 30);
        tAttack.setVisible(true);
        add(tAttack);
    
    
    
        JLabel lDefense = new JLabel("Defense");
        lDefense.setBounds(230, 45, 60, 30);
        lDefense.setVisible(true);
        add(lDefense);
    
        JLabel lDefensePrec = new JLabel("Defense");
        lDefensePrec.setBounds(620, 45, 60, 30);
        lDefensePrec.setVisible(true);
        add(lDefensePrec);
    
        JLabel lServe = new JLabel("Serve");
        lServe.setBounds(300, 45, 50, 30);
        lServe.setVisible(true);
        add(lServe);
    
        JLabel lServePrec = new JLabel("Serve");
        lServePrec.setBounds(690, 45, 50, 30);
        lServePrec.setVisible(true);
        add(lServePrec);
    
        JLabel lBlock = new JLabel("Block");
        lBlock.setBounds(355, 45, 50, 30);
        lBlock.setVisible(true);
        add(lBlock);
    
    
        JButton bY1 = new JButton("Y");
        bY1.setBounds(160, 75, 25, 25);
        bY1.setVisible(true);
        add(bY1);
        JButton bN1 = new JButton("N");
        bN1.setBounds(190, 75, 25, 25);
        bN1.setVisible(true);
        add(bN1);
    
        JButton bY2 = new JButton("Y");
        bY2.setBounds(225, 75, 25, 25);
        bY2.setVisible(true);
        add(bY2);
        JButton bN2 = new JButton("N");
        bN2.setBounds(255, 75, 25, 25);
        bN2.setVisible(true);
        add(bN2);
    
        JButton bY3 = new JButton("Y");
        bY3.setBounds(290, 75, 25, 25);
        bY3.setVisible(true);
        add(bY3);
        JButton bN3 = new JButton("N");
        bN3.setBounds(320, 75, 25, 25);
        bN3.setVisible(true);
        add(bN3);
    
        JButton bY4 = new JButton("Y");
        bY4.setBounds(350, 75, 25, 25);
        bY4.setVisible(true);
        add(bY4);
        JButton bN4 = new JButton("N");
        bN4.setBounds(380, 75, 25, 25);
        bN4.setVisible(true);
        add(bN4);
    
    
    
    
    
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        matchWindow window = new matchWindow();
        window.setVisible(true);
    
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    
    }
    
    }
    

    你们写的组件太多了,覆盖了我修复了你们代码的问题

  2. # 2 楼答案

    首先添加组件,然后使框架可见。在构造函数中,您有一个setVisible(true)删除它。OFFTOPIC:并使用LayoutManager而不是“Null布局”