【发布时间】:2015-05-15 21:29:43
【问题描述】:
我有一个问题,当我在 JFrame 中包含 JPanel 时,它会覆盖整个屏幕。我的代码是
import java.awt.*;
import javax.swing.*;
public class TestFrameExample extends JPanel {
static String TheQuestion;
static String QN1 = "Question 1: ";
static String Q1 = "What is Lead's chemical symbol?";
static String brk = "___________________";
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(new Color(135, 206, 250));
g.setFont(new Font("Tahoma", Font.BOLD, 48));
g.setColor(Color.WHITE);
g.drawString(QN1, 80, 100);
g.setFont(new Font("Tahoma", Font.BOLD, 48));
g.setColor(Color.WHITE);
g.drawString(brk, 60, 130);
g.setFont(new Font("Tahoma", Font.PLAIN, 36));
g.setColor(Color.WHITE);
g.drawString(Q1, 80, 200);
}
public static void main(String[] args) {
TestFrameExample graphics = new TestFrameExample();
JFrame ThisFrame = new JFrame();
TheQuestion = QN1;
JTextField txt = new JTextField(10);
JPanel Panel = new JPanel();
ThisFrame.setTitle("Question 1");
ThisFrame.setSize(720, 480);
ThisFrame.setLocationRelativeTo(null);
ThisFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ThisFrame.setVisible(true);
ThisFrame.add(graphics);
Panel.setBackground(new Color(135, 206, 250));
Panel.setSize(null);
Panel.setLocation(null);
Panel.add(txt);
ThisFrame.add(Panel);
}
}
但是,当我改变时
Panel.setLocation(null)
到
Panel.setLocation(80, 250)
它覆盖了整个屏幕。
有人可以帮我把它放在屏幕上的正确位置吗?
更新
我按照我在评论中所说的进行了修改,并阅读了代码
import java.awt.*;
import javax.swing.*;
public class TestFrameExample extends JPanel {
static String TheQuestion;
static String QN1 = "Question 1: ";
static String Q1 = "What is Lead's chemical symbol?";
static String brk = "___________________";
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(new Color(135, 206, 250));
g.setFont(new Font("Tahoma", Font.BOLD, 48));
g.setColor(Color.WHITE);
g.drawString(QN1, 80, 100);
g.setFont(new Font("Tahoma", Font.BOLD, 48));
g.setColor(Color.WHITE);
g.drawString(brk, 60, 130);
g.setFont(new Font("Tahoma", Font.PLAIN, 36));
g.setColor(Color.WHITE);
g.drawString(Q1, 80, 200);
}
public static void main(String[] args) {
TestFrameExample graphics = new TestFrameExample();
JFrame ThisFrame = new JFrame();
TheQuestion = QN1;
JTextField txt = new JTextField(20);
JPanel panel = new JPanel();
ThisFrame.setTitle("Question 1");
ThisFrame.setSize(720, 480);
ThisFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ThisFrame.add(graphics);
panel.setBackground(new Color(135, 206, 250));
panel.add(txt);
ThisFrame.add(panel);
ThisFrame.add(panel, BorderLayout.PAGE_END);
ThisFrame.setLocationRelativeTo(null);
ThisFrame.setVisible(true);
}
}
它将输入文本放在屏幕底部,但屏幕的其余部分保持灰色。
但是我根本不明白您发布的第二组代码;这远远超出了我的技能范围(过去 6 周我才学习 Java)。在这个阶段我所寻找的只是使面板不会使屏幕的其余部分变黑。
是否可以仅通过修改当前代码集来实现,还是我必须完全重写代码?
【问题讨论】:
-
put it in the right spot on the screen?“正确的位置”在哪里? -
您正在添加您的面板变量两次,一个添加在另一个之上,这没有任何意义,应该被视为搞砸了您的程序。请删除
ThisFrame.add(panel);