为什么我的JComponent没有显示在背景JFrame的顶部?
请检查以下代码:
class CounterFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private MyPanel myComponent = new MyPanel();
private JLabel contentPane = new JLabel(new ImageIcon(getClass()
.getResource("background/2.jpg")));
CounterFrame() {
contentPane.setLayout(new GridBagLayout());
setContentPane(contentPane);
add(myComponent);
}
}
class MyPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private Font myFont;
private String target;
private String raised = "200000";
private Image background;
public MyPanel() {
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D twoD = (Graphics2D) g;
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
twoD.setRenderingHints(rh);
File f = new File("fonts/event.ttf");
try {
myFont = Font.createFont(Font.TRUETYPE_FONT, f);
myFont = myFont.deriveFont(90f);
} catch (FontFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
twoD.setColor(Color.BLACK);
twoD.setFont(myFont);
twoD.drawString(raised,5, 90);
}
}
似乎在这里可以正常工作(在此SSCCE变种的代码中)。
工作代码
import java.awt.*;
import javax.swing.*;
import java.net.URL;
class CounterFrame extends JFrame {
private static final long serialVersionUID = 1L;
private MyPanel myComponent = new MyPanel();
private JLabel contentPane;
CounterFrame() {
try {
URL url = new URL("http://pscode.org/media/stromlo2.jpg");
contentPane = new JLabel(new ImageIcon(url));
} catch(Throwable t) {
t.printStackTrace();
}
contentPane.setLayout(new GridBagLayout());
setContentPane(contentPane);
add(myComponent);
}
public static void main(String[] args) {
//Create the frame on the event dispatching thread
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
CounterFrame rc = new CounterFrame();
rc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
rc.pack();
rc.setVisible(true);
}
});
}
}
class MyPanel extends JPanel {
private static final long serialVersionUID = 1L;
private String target;
private String raised = "200000";
private Image background;
public MyPanel() {
setPreferredSize(new Dimension(200,100));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D twoD = (Graphics2D) g;
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
twoD.setRenderingHints(rh);
twoD.setColor(Color.BLACK);
twoD.drawString(raised,5, 90);
}
}
我可以从中得出的唯一结论是:
找不到您的资源。
您需要学习基本的调试技巧。在这种情况下,具体来说是“检查每个步骤中正在发生的假设是否确实有效”。如下所示的“三级”语句应分解为3个语句,同时使用System.out.println()或调试器检查3个结果中的每一个。
调试不友好!
new JLabel(new ImageIcon(getClass()
.getResource("background/2.jpg")));
我的组件没有显示。我该如何解决这个问题? 法典: 结果:
问题内容: 我是Java初学者 我试图制作我的jframe节目,但没有 它不起作用 问题答案: 我认为您没有正确声明您的JFrame。这是创建简单框架的示例:
所以我在玩JPanel和JFrames,我注意到我创建的JPanel在添加到Jframe对象时没有显示。注意,当我在Jframe构造函数中创建了一个JPanel,并在将其添加到Jframe之前提供了JPanel参数时,它起了作用。然而,现在我使用的是我创建的JPanel对象,它不再工作了。这就是我所做的。 编辑:事实上,我想我发现了错误。JPanel有它的绘制方法,当删除时,它允许Jframe显示
我最近编写了一个包含背景图像的系统主页。设置背景后,我创建的按钮无法正确显示。它只是在我使用鼠标并指向按钮的位置后出现的。有人能教我如何解决这个问题吗?谢谢你的帮助。代码如下: 公共类主页扩展JFrame{
这应该是一个相对简单的问题,但它让我发疯。我正在尝试在JavaFX中创建扫雷器(主要用于练习),但我甚至无法显示一个简单的矩形。我以前运行过一次游戏,但我试图使游戏更加抽象,因此更容易编码,但我遇到了不显示任何问题。 我消除了所有无关的代码,使其尽可能简单。我基本上是在尝试创建一个名为Box的具有特定颜色和大小的矩形,将框添加到窗格中,并显示窗格。为了使Box成为可以在窗格上显示的节点,我使Box
背景,就是衬在文字和前景后面显示的东西。KAG 中(默认设定)的是读入 640×480 大小的背景图片。 首先,将想要显示的 640×480 的图片放进 bgimage 文件夹中。把图片命名为 bg0.jpg 。KAG 的 LZH 档里并没有包含背景图片,请自己准备一张吧(^^) 接着,把在 显示文字相关 里所使用的剧本档(first.ks)内容修改成以下这样。 [imagestorage=