下午好,
作为一个旨在帮助我练习使用JPanel和子类的个人项目,我正在编写一个专业的Web组合,其中包含我的教育,工作和志愿者经验,以及其他使用JApplet的着名作品。
我将布局设置为BorderLayout,JButtons对齐WEST。单击一个按钮时,CENTER中的JPanels应该使用适当的面板切换出来。但是,我还没那么远。
到目前为止,我只有一个JLabel到我的家庭JPanel上说'#34; Home,"因为我想在做更多事情之前确保Home JPanel类中的方法正常工作。问题是JPanel没有显示在applet上。
问题是,当我将所有代码从JPanel的类移到主类上时,它显示得很好。所以我知道问题在于我是如何构建方法的,或者是我如何构建我的JPanel类。
我已经尝试将其设置为可见 - 这不起作用。我已经尝试将LayoutManager设置为类构造函数的参数,我尝试添加paintComponent和super.paint(g),我尝试使用this.home.addHomePanel--但没有任何效果。
我知道我错过了一些事情。如果有人能帮助我,我们将不胜感激。如果您需要更多信息,请与我们联系。谢谢你的阅读。
主类:
public class myWebFolio extends JApplet implements ActionListener
{
JButton[ ] menu =
{
new JButton("Home"),
new JButton("Education"),
new JButton("Work Experience"),
new JButton("Programming Projects"),
new JButton("Other")
};
//adds panel to memory
private JPanel buttonPanel = new JPanel();
private Home home;
public void init()
{
setLayout (new BorderLayout( ) ); //changes the layout of the appl
home = new Home();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS));
/*
* Adds an ActionListener to each button
* and then adds the button to the buttonPanel.
* Also adds an invisible componenet to give the buttons
* spacing.
*/
for (int i=0; i<menu.length; i++)
{
menu[i].addActionListener(this);
buttonPanel.add(Box.createVerticalStrut(100));
buttonPanel.add(menu[i]);
}
add(buttonPanel,BorderLayout.WEST);
home.addHomePanel();
}
public void actionPerformed(ActionEvent event)
{
}
public void paintComponent(Graphics g)
{
super.paint(g);
}
}
Home Panel&#39;类:
public class Home extends JPanel
{
JPanel homePanel = new JPanel(new FlowLayout());
JLabel label = new JLabel("Home");
/**
* Constructor for objects of class Home
*/
public Home()
{
}
public void addHomePanel()
{
homePanel.add(label, FlowLayout.LEFT);
homePanel.setVisible(true);
add(homePanel, BorderLayout.CENTER);
}
public void paintComponent(Graphics g)
{
super.paint(g);
}
}