JLabel не появится на JPanel - PullRequest
0 голосов
/ 13 мая 2018

Нужна помощь :) Мы с друзьями пишем в школе палача для проекта, и мы действительно одурачены с одной стороны.Мы создали JFrame и внешний JPanel (фон), а затем разделили его на два столбца (левый столбец работает как нам нравится).Наша проблема заключается в правой колонке, правой панели.Нам нужно настроить JLabel, чтобы у нас были строки, соответствующие длине слова, которую выбрал игрок, но наша JLabel не работает.Я пытался просто сделать простой System.out.println («тест»);и ничего не отображается на панели (blankSpaces).Макет также был изменен, чтобы попытаться что-то показать.Мы также попытались установить JLabel в методе, который будет вызываться на панели blankSpaces, но, похоже, ничего не работает.Это всего лишь два класса, которые у нас есть для игры, поэтому, если для объяснения необходим какой-либо другой код, пожалуйста, дайте мне знать:)

// rightPanel

import java.awt.*;

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

import javax.swing.*;

public class RightPanel extends JPanel {
    //unnecessary code rn
    Guess dalia = new Guess();
    WordSelection clementine = new WordSelection();
    private String letterGuess = "";
    public JTextField jt;
    //where we tried to make a test or just declare the label
    private JLabel label3;
    JLabel test; 
    private JPanel parent;

    JPanel panel3;
    //constructor
    public RightPanel() {
        this.setLayout(new GridLayout(0, 1));
        this.add(letters(parent));
        this.add(lettersGuessed(parent));
        this.add(blankSpaces(parent));
        this.add(notLetterButtons(parent));

    }
    //where the alphabet is supposed to be but we just made it using coordinates
    public JPanel letters(JPanel Parent) {
        GridLayout layout1 = new GridLayout(1, 1);
        JPanel panel1 = new JPanel(layout1);

        return panel1;
    }

    // where the player will guess letters

    public JPanel lettersGuessed(JPanel parent) {
        GridLayout layout2 = new GridLayout(1, 1);
        JPanel panel2 = new JPanel(layout2);
        panel2.add(generateTextField());

        return panel2;
    }
    //textfield that is currently useless
    public JTextField generateTextField() {
        // TODO Auto-generated method stub
        // JLabel jl = new JLabel();
        jt = new JTextField(1);
        jt.setFont(new Font("Verdana", 1, 30));
        jt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                    // TODO Auto-generated method stub
                letterGuess = jt.getText().substring(0, 1);
                // jl.setText(input);
            }
        });

        return jt;
    }
    //where we coded the alphabet
    @Override
    public void paint(Graphics g) {

        int y = this.getHeight();
        int x = this.getWidth();
        // super.paint(g);
        String firstLine = "A B C D E F G";
        String secondLine = "H I J K L M N";
        String thirdLine = "O P Q R S T U";
        String fourthLine = "V W X Y Z";

        g.setFont(new Font("Verdana", 1, 30));
        // alphabet
        g.drawString(firstLine, x / 3, y / 25);
        g.drawString(secondLine, x / 3, y / 12);
        g.drawString(thirdLine, x / 3, y / 8);
        g.drawString(fourthLine, (int) (x / 2.65), y / 6);

    }

    // where the blank spaces in the amount of letters to be guessed will appear
    public JPanel blankSpaces(JPanel parent) {
        GridLayout layout3 = new GridLayout(1, 1);
        panel3 = new JPanel(layout3);
    //    panel3.add(label3);

        /*test = new JLabel("dalia is my bffl");
        test.setLayout(new BorderLayout());

        test.setVerticalTextPosition(JLabel.CENTER);
        test.setHorizontalTextPosition(JLabel.CENTER);
        test.setVisible(true);
        panel3.add(test);*/
        return panel3;
    }
    // where player will be able to choose if they want a new word

    public JPanel notLetterButtons(JPanel parent) {
        // int rows = 2; int cols = 4;
        GridLayout layout4 = new GridLayout(2, 4);
        JPanel panel4 = new JPanel(layout4);
        /*

        JPanel[][] parent = new JPanel[2][4];
        Container f1 = new Container();
        f1.setLayout(new GridLayout(2, 4));
        for(int m = 0; m < 2; m++) {
            for(int n = 0; n < 4; n++) {
                parent[m][n] = new JPanel();
                f1.add(parent[m][n]);
            }
        }*/

        int y = this.getHeight();
        int x = this.getWidth();

        //new button
        JButton button1 = new JButton();
        button1.setText("QUIT");
        button1.addActionListener(e -> quitAction() );
        panel4.add(button1);

        //new button
        JButton button2 = new JButton();
        button2.setText("SUBMIT");
        button2.addActionListener(e -> submitAction() );
        panel4.add(button2);

        //new button
        JButton button3 = new JButton();
        button3.setText("QUOTE");

        panel4.add(button3);
        //new button
        JButton button4 = new JButton();
        button4.setText("FRENCH");

        panel4.add(button4);

        //new button
        JButton button5 = new JButton();
        button5.setText("5");
        button5.addActionListener(e -> fiveAction() );
        panel4.add(button5);

        //new button
        JButton button6 = new JButton();
        button6.setText("6");
        button6.addActionListener(e -> sixAction() );
        panel4.add(button6);

        //new button
        JButton button7 = new JButton();
        button7.setText("7");
        button7.addActionListener(e -> sevenAction() );
        panel4.add(button7);

        //new button
        JButton button8 = new JButton();
        button8.setText("RESTART");

        panel4.add(button8);


        return panel4;

        // panel4.add(gt);
        // gt.pack();
        // gt.setVisible(true);
    //    return f1;
    }

    private Object fiveAction() {
        clementine.wordPick(5);
        //String underline = "";
        //for (int x = 0; x < 5; x++) {
        //    underline += "_ ";
        //}
        JLabel lbl = new JLabel ( "i hate this");
         label3.setText("_ _ _ _ _");
        panel3.add(label3);
        return label3;
    }
    private Object sixAction() {
        clementine.wordPick(6);
        JLabel label6 = new JLabel("_ _ _ _ _ _");

        return label6;
    }
    private Object sevenAction() {
        clementine.wordPick(7);
        return null;
    }
    private JButton submitAction() {

        String letterGuess = jt.getText();
        dalia.runThrough();
        return null;
    }

    private Object quitAction() {
        System.exit(0);
        return null;
    }

}

// Фонкласс

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;

public class Background extends JPanel {

    private static final int FRAME = 400;

    //private Dimension rightPanelSize;

    HangmanPicture hangmanPicture = new HangmanPicture();
    RightPanel rightPanel = new RightPanel();

    public Background(JFrame frame) {

        this.setLayout(new GridLayout(0, 2));
        this.setPreferredSize(frame.getSize());
        this.add(hangmanPicture);
        this.setPreferredSize(frame.getSize());
        Dimension frameSize = frame.getSize();

        this.add(rightPanel);
        this.setPreferredSize(frame.getSize());
        //double up = height / 4;
        //double down = height * (3 / 4);

    //  int width = (int) (frameSize.getWidth()/2);
        //int height = (int) (frameSize.getHeight());
        //this.rightPanelSize = new Dimension(width, height);

    }// heyy 
    enter code here


}

Спасибо !!

...