JLabel 未显示在屏幕中央
JLabel isn't showing at the center of the screen
我正在编写“问题 class”,因此我可以更轻松地向 grame/game 添加问题,无论出于何种原因,我的 JFrame
看起来像这样:
问题
package project.school.code;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
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.JPanel;
public class Question extends JPanel{
private String canswer;
private String wanswer;
private JButton correct;
private JButton wrong;
private JLabel question;
private String qask;
//Setter and getter for qask and canswer and wanswer
public Dimension getPrefrredSize() {
return new Dimension(1920,1920);
}
public Question(String correctAnswer,String NotCorrect,String Ask,Font qfont) {
this.qask = Ask;
this.canswer = correctAnswer;
this.wanswer = NotCorrect;
this.correct = new JButton(canswer);
this.wrong = new JButton(wanswer);
this.question = new JLabel();
this.question.setText(Ask);
this.question.setFont(qfont);
JPanel buttons = new JPanel();
buttons.setPreferredSize(new Dimension(500,500));
setLayout(new BorderLayout());
this.correct.setPreferredSize(new Dimension(250,250));
this.correct.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Main.setCorrectans(Main.getCorrectans() + 1);
JFrame GOODJOB = new JFrame("עבודה טובה!");
Font tbf = new Font(null,Font.BOLD, 0);
Font text = tbf.deriveFont(20f);
JLabel answer = new JLabel("כל הכבד עניתה נכון!");
answer.setFont(text);
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.setLayout(new BorderLayout());
GOODJOB.setPreferredSize(new Dimension(500,500));
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.getContentPane().add(answer, BorderLayout.PAGE_START);
GOODJOB.pack();
GOODJOB.setVisible(true);
}}
);
this.wrong.setPreferredSize(new Dimension(250,250));
this.wrong.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JFrame GOODJOB = new JFrame("עבודה גרועה!");
Font tbf = new Font(null,Font.BOLD, 0);
Font text = tbf.deriveFont(20f);
JLabel answer = new JLabel("!עניתה לא נכון");
answer.setFont(text);
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.setLayout(new BorderLayout());
GOODJOB.setPreferredSize(new Dimension(500,500));
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.getContentPane().add(answer,BorderLayout.PAGE_START);
GOODJOB.pack();
GOODJOB.setVisible(true);
}}
);
buttons.add(wrong,BorderLayout.EAST);
buttons.add(correct,BorderLayout.WEST);
add(question,BorderLayout.PAGE_START);
add(buttons, BorderLayout.PAGE_END);
}
}
我尝试为这个奇怪的故障搜索答案JLabel
,但我似乎找不到答案,如果您知道我的代码有什么问题,请回答!
由于 answer
标签从未添加到可见容器中(无论是在 创建时)我必须假定您指的是 question
标签。
add(question,BorderLayout.PAGE_START);
添加到 BorderLayout
的 PAGE_START
约束的组件被赋予其首选高度,并拉伸以适应 整个可用宽度。
要使文本在 JLabel
中居中,请使用 constructor 指定所显示文本的水平对齐方式。六个构造函数中的三个接受对齐。这种情况需要 SwingConstants.CENTER
.
我正在编写“问题 class”,因此我可以更轻松地向 grame/game 添加问题,无论出于何种原因,我的 JFrame
看起来像这样:
问题
package project.school.code;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
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.JPanel;
public class Question extends JPanel{
private String canswer;
private String wanswer;
private JButton correct;
private JButton wrong;
private JLabel question;
private String qask;
//Setter and getter for qask and canswer and wanswer
public Dimension getPrefrredSize() {
return new Dimension(1920,1920);
}
public Question(String correctAnswer,String NotCorrect,String Ask,Font qfont) {
this.qask = Ask;
this.canswer = correctAnswer;
this.wanswer = NotCorrect;
this.correct = new JButton(canswer);
this.wrong = new JButton(wanswer);
this.question = new JLabel();
this.question.setText(Ask);
this.question.setFont(qfont);
JPanel buttons = new JPanel();
buttons.setPreferredSize(new Dimension(500,500));
setLayout(new BorderLayout());
this.correct.setPreferredSize(new Dimension(250,250));
this.correct.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Main.setCorrectans(Main.getCorrectans() + 1);
JFrame GOODJOB = new JFrame("עבודה טובה!");
Font tbf = new Font(null,Font.BOLD, 0);
Font text = tbf.deriveFont(20f);
JLabel answer = new JLabel("כל הכבד עניתה נכון!");
answer.setFont(text);
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.setLayout(new BorderLayout());
GOODJOB.setPreferredSize(new Dimension(500,500));
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.getContentPane().add(answer, BorderLayout.PAGE_START);
GOODJOB.pack();
GOODJOB.setVisible(true);
}}
);
this.wrong.setPreferredSize(new Dimension(250,250));
this.wrong.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JFrame GOODJOB = new JFrame("עבודה גרועה!");
Font tbf = new Font(null,Font.BOLD, 0);
Font text = tbf.deriveFont(20f);
JLabel answer = new JLabel("!עניתה לא נכון");
answer.setFont(text);
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.setLayout(new BorderLayout());
GOODJOB.setPreferredSize(new Dimension(500,500));
GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GOODJOB.getContentPane().add(answer,BorderLayout.PAGE_START);
GOODJOB.pack();
GOODJOB.setVisible(true);
}}
);
buttons.add(wrong,BorderLayout.EAST);
buttons.add(correct,BorderLayout.WEST);
add(question,BorderLayout.PAGE_START);
add(buttons, BorderLayout.PAGE_END);
}
}
我尝试为这个奇怪的故障搜索答案JLabel
,但我似乎找不到答案,如果您知道我的代码有什么问题,请回答!
由于 answer
标签从未添加到可见容器中(无论是在 创建时)我必须假定您指的是 question
标签。
add(question,BorderLayout.PAGE_START);
添加到 BorderLayout
的 PAGE_START
约束的组件被赋予其首选高度,并拉伸以适应 整个可用宽度。
要使文本在 JLabel
中居中,请使用 constructor 指定所显示文本的水平对齐方式。六个构造函数中的三个接受对齐。这种情况需要 SwingConstants.CENTER
.