大家好,我是在我的大学小型项目的开发。 这是一个图书馆管理系统,这是我应该在的Java Swing使用净豆的IDE做。 首先,我在做手工编码。 这需要时间。
在手动编码我创建菜单栏,并和项目单的JFrame,对所有行动进行我写的代码为所有Jpanels。 它使文件和代码巨大。 和混淆了。
现在,我需要你的帮助。 我创建了一个主要的JFrame与菜单一个JPanel - 新增图书另一个JPanel的 - (!演示,对操作发生在地址簿)上添加成功的书
我做了动作侦听器
addBook addbk = new addBook();
this.getContentPane().add(addbk);
写这个代码。 我没有任何意义。 朋友们,作为一个新的java的,我要研究的是
1)如何CAL和显示外部的JPanel的动作进行2)如何显示其他的JPanel,以同根的JFrame是否发生在外部的JPanel的任何事件。
在排序,类似的iFrame在HTML谢谢大家。
http://compilr.com/abelkbil/openlib/OpenLibMainGUI.java
http://compilr.com/abelkbil/openlib/addBook.java
http://compilr.com/abelkbil/openlib/bookAdded.java
CardLayout ,正是您所需要的这种情况。 并做学习Java命名约定 ,并坚持给他们,因为你是一个初学者,所以要在正确的轨道上从一开始总是好的。
这里有一个例子,你可以看看:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CardLayoutExample
{
private JPanel contentPane;
private MyPanel panel1;
private MyPanel panel2;
private MyPanel panel3;
private JComboBox choiceBox;
private String[] choices = {
"Panel 1",
"Panel 2",
"Panel 3"
};
private void displayGUI()
{
JFrame frame = new JFrame("Card Layout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new CardLayout());
choiceBox = new JComboBox(choices);
panel1 = new MyPanel(contentPane
, Color.RED.darker().darker(), this);
panel2 = new MyPanel(contentPane
, Color.GREEN.darker().darker(), this);
panel3 = new MyPanel(contentPane
, Color.DARK_GRAY, this);
contentPane.add(panel1, "Panel 1");
contentPane.add(panel2, "Panel 2");
contentPane.add(panel3, "Panel 3");
frame.getContentPane().add(choiceBox, BorderLayout.PAGE_START);
frame.getContentPane().add(contentPane, BorderLayout.CENTER);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public JComboBox getChoiceBox()
{
return choiceBox;
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new CardLayoutExample().displayGUI();
}
});
}
}
class MyPanel extends JPanel
{
private JButton jcomp1;
private JPanel contentPane;
private Color backgroundColour;
private JComboBox choiceBox;
public MyPanel(JPanel panel, Color c, CardLayoutExample cle)
{
contentPane = panel;
backgroundColour = c;
choiceBox = cle.getChoiceBox();
setOpaque(true);
setBackground(backgroundColour);
//construct components
jcomp1 = new JButton ("Show New Panel");
jcomp1.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String changeToPanel = (String) choiceBox.getSelectedItem();
CardLayout cardLayout = (CardLayout) contentPane.getLayout();
cardLayout.show(contentPane, changeToPanel);
}
});
add(jcomp1);
}
@Override
public Dimension getPreferredSize()
{
return (new Dimension(500, 500));
}
}
否则,你可以看看这个例子也。