我正在尝试创建一个扩展JFrame的GUI类。框架有3个带有背景图像的按钮。但到目前为止,我只得到一个白色的空白框架。
public class guiOpen extends JFrame implements ActionListener {
Container c = getContentPane();
JButton database = new JButton("Database");
JButton create = new JButton("Player Creator");
JButton edit = new JButton("Player Editor");
JButton Csave = new JButton("Create/Save");
JButton Esave = new JButton("Edit/Save");
JButton back = new JButton("Back");
JTextArea infoBio = new JTextArea("");
JPanel opener = new JPanel();
JPanel db = new JPanel();
JPanel newplayer = new JPanel();
JPanel tool = new JPanel();
JLabel images ;
public guiOpen()
{
Font FUD = new Font("Comic Sans MS", 1, 32);
Font FA = new Font("Comic Sans MS", 5, 40);
Font fBtns = new Font("Comic Sans MS", 1, 25);
Color grassC = new Color(0, 100, 0);
Color cBtns = new Color(255, 255, 255);
c.add(opener);
c.add(db);
c.add(newplayer);
c.add(tool);
this.setTitle("Tatical Soccer Mania");
this.setSize(800,600);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
images = new JLabel(new ImageIcon ("Tatical Soccer Mania\\TSM_LOGO.jpg")) ;
opener.add(images);
validate();
database.setBounds(50, 100, 240, 120);
database.setFont(fBtns);
database.setOpaque(true);
database.setBackground(grassC);
database.setVisible(true);
database.addActionListener(this);
database.setForeground(cBtns);
opener.add(database);
create.setBounds(50, 240, 240, 120);
create.setFont(fBtns);
create.setOpaque(true);
create.setBackground(grassC);
create.setForeground(cBtns);
create.setVisible(true);
create.addActionListener(this);
opener.add(create);
edit.setForeground(cBtns);
edit.setBounds(50, 380, 240, 120);
edit.setFont(fBtns);
edit.setOpaque(true);
edit.setBackground(grassC);
edit.setVisible(true);
edit.addActionListener(this);
opener.add(edit);
opener.setVisible(true);
db.setVisible(false);
newplayer.setVisible(false);
tool.setVisible(false);
}
}
如果你能解释发生了什么,以及如何解决它将非常感激。我环顾了堆栈,没有任何帮助我解决我的问题。我刚开始编程,所以请用初学者可以理解的术语解释。
答案 0 :(得分:1)
这个问题已经回答:
Java - JPanel with background image AND normal functionality
Simplest way to set image as JPanel background
在那里,您将在JPanels或GUI组件上找到几种背景图像解决方案。
现在,当您收到错误消息时,如果您想获得一些反馈来解决它,您应该提供一些有关错误的详细信息。
<强>更新强>
在您更新问题时,以下是我的评论:
ActionListener
界面时,它必须实施+actionPerformed(ActionEvent):void
方法。看了你的代码之后,我看到了两个可能的解决方案(我测试了两个并且它们运行良好):
1-使用Layout Manager向JFrame
添加内容。这样,Java知道每个面板的大小,它们将是可见的。
JPanel content = new JPanel();
content.setLayout(new BorderLayout());
content.add(opener, BorderLayout.NORTH);
content.add(db, BorderLayout.EAST);
content.add(newplayer, BorderLayout.CENTER);
content.add(tool, BorderLayout.SOUTH);
c.add(content);
2-为每个JPanel
提供一个尺寸。
opener.setSize(800, 200);
这是随机图像的外观:
现在,由于您使用的是JLabel
,因此不显示背景图片,只会在JButton
元素旁边添加图片。