![](/img/trans.png)
[英]I'm attempting to change the image Icon in my JFrame but it's not working, how can I fix it?
[英]I'm attempting to create a small GUI application, but the contents of the JFrame are not showing on screen. How can I fix my code?
到目前为止,我一直在用Java开发(非常)小的GUI应用程序。 总的来说,我对Swing和Java还是陌生的,但是到目前为止,我已经能够按照我想要的方式来使一切工作。 但是,在清理代码后,当我运行该程序时,仅出现窗口边框。 我在做什么错,我该如何修正我的代码? 提前谢谢!
为了节省空间,我将Pastebin链接到了我所有的类(除Main之外)。
主班
package me.n3rdfall.ezserver.main;
public class Main {
public static GUI g = new GUI();
public static void main(String[] args) {
g.showWindow(800, 500);
}
}
GUI类
ButtonListener类别
编辑:看来,直接在“框架”上调用removeAll()实际上删除了除我添加的内容以外的其他重要内容。 通过在getContentPane()上调用removeAll(),此问题已解决。
快速攻克:删除removeAll()
函数。
public void homePage() {
// frame.removeAll();
// mainpanel.removeAll();
// topbar.removeAll();
我不确定您要达到的目标,但这至少会显示一些项目。 如果您是我,我将通过扩展JFrame来重建此GUI。 这将使您的代码更易于阅读。
我也认为您想要通过按钮实现的是切换布局,您可以通过使用CardLayout
更轻松地完成此操作
示例(与代码无关,只是为了演示):
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Example extends JFrame implements ActionListener {
private JButton leftButton;
private JButton rightButton;
private CardLayout cardLayout = new CardLayout();
JPanel cards = new JPanel(cardLayout);
final static String LEFTPANEL = "LEFTPANEL";
final static String RIGHTPANEL = "RIGHTPANEL";
JPanel card1;
JPanel card2;
public Example() {
JPanel topPanel = new JPanel();
addButtons(topPanel);
add(topPanel, BorderLayout.NORTH);
add(cards, BorderLayout.CENTER);
//Initiates the card panels
initCards();
setTitle("My Window");
setSize(300, 300);
setLocationRelativeTo(null);
setVisible(true);
}
private void initCards() {
card1 = new JPanel();
card2 = new JPanel();
card1.setBackground(Color.black);
card2.setBackground(Color.red);
cards.add(card1, LEFTPANEL);
cards.add(card2, RIGHTPANEL);
}
private void addButtons(Container con) {
leftButton = new JButton("Left Button");
leftButton.addActionListener(this);
rightButton = new JButton("Right Button");
rightButton.addActionListener(this);
con.add(leftButton, BorderLayout.WEST);
con.add(rightButton, BorderLayout.EAST);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(leftButton)) {
//Change cardlayout
cardLayout.show(cards, LEFTPANEL);
} else if(e.getSource().equals(rightButton)) {
//Change cardlayout
cardLayout.show(cards, RIGHTPANEL);
}
}
public static void main(String[] args) {
new Example();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.