- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
为什么窗口为空(按下按钮后无图像、按钮和蓝色背景)?
在Main
类中,我写道:
package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.Menu;
public class Main extends JFrame {
public Main() {
setTitle("Меню");
setSize(640, 480);
setResizable(false);
JMenu menu = new JMenu();
add(menu);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
在Menu
类中:
package com.company;
import java.awt.*;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.BoxLayout;
import javax.swing.Box;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class Menu extends JPanel {
public boolean started = false;
public Menu() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(Box.createVerticalStrut(280));
JButton button = new JButton("START");
button.setAlignmentX(CENTER_ALIGNMENT);
button.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
start();
}
});
add(button);
add(Box.createVerticalGlue());
}
public void start() {
removeAll();
started = true;
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (!started)
g.drawImage(new ImageIcon(Menu.class.getResource("C:\\Users\\powha\\Documents\\CTT\\ЗАНЯТИЯ\\Конкурсы\\Проекты\\NYRain\\src\\com\\company\\images\\background.png")).getImage(), 0, 0, 640, 480, this);
else
setBackground(Color.BLUE);
}
}
它显示没有错误。
但是按下按钮后没有图像,按钮和蓝色背景。
为什么?
我添加了g.drawImage
、setBackground(Color.BLUE)
、按钮、button.addActionListener
等库。
链路也正常。
1条答案
按热度按时间fkaflof61#
在问题What is wrong with the button?中,您试图将
java.awt.Menu
对象添加到JFrame
,但这是不可能的(您只能添加从java.awt.Component
扩展到JFrame
的对象,并且java.awt.Menu
不能扩展java.awt.Component
)。在这个问题中,现在添加一个空的
JMenu
,这是可能的,但不会添加任何真实的内容。您可能想添加一个
com.company.Menu
对象。为此,必须对
Main
类执行两项操作:import java.awt.Menu;
JMenu menu = new JMenu();
行替换为Menu menu = new Menu();
更改后的www.example.comMain.java版本如下所示: