Нужна помощь :) Мы с друзьями пишем в школе палача для проекта, и мы действительно одурачены с одной стороны.Мы создали 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
}
Спасибо !!