我最近写了一个关于预留席位的代码。在它的guı部分我需要创建多个窗口。我的意思是窗口应该根据用户的选择而改变。例如 ; 在其中一个窗口 1)如果用户点击预约座位按钮,他将进入姓名入口页面 2)如果用户点击关于我们按钮,他将转到提供开发者信息的页面。
所以最后页面会创建复杂的交互mape。
然而,我甚至无法创造第一次过渡。我已经尝试过了内部框架!你能给我一个关于它的例子或想法吗?
这是我的主页
public Main_GUI() {
getContentPane().setLayout(null);
panel0 =new JPanel();
panel0.setBackground(Color.BLUE);
panel0.setBounds(22, 11, 407, 278);
panel0.setLayout(null);
p1=new About_Us();
p2=new Username();
pnew=new JPanel();
JLabel lblLibraryBooking = new JLabel("LIBRARY BOOKING");
lblLibraryBooking.setForeground(Color.YELLOW);
lblLibraryBooking.setFont(new Font("Tahoma", Font.BOLD, 30));
lblLibraryBooking.setBounds(61, 11, 295, 50);
panel0.add(lblLibraryBooking);
JButton btnNewButton = new JButton("RESERVE A SEAT NOW!");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel0.setVisible(false);
pnew=p2.getPanel();
pnew.setVisible(true);
repaint();
}
});
btnNewButton.setBounds(93, 80, 198, 50);
panel0.add(btnNewButton);
JButton btnAboutUs = new JButton("ABOUT US");
btnAboutUs.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel0.setVisible(false);
p1.getPanel().setVisible(true);
}
});
btnAboutUs.setBounds(93, 214, 198, 23);
panel0.add(btnAboutUs);
uri=null;
try {
uri = new URI("http://library.bilkent.edu.tr/");
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JButton btnNewButton_1 = new JButton("Go To Bilkent Library Webpage !");
btnNewButton_1.setBounds(93, 156, 198, 31);
btnNewButton_1.setHorizontalAlignment(SwingConstants.LEFT);
btnNewButton_1.setBorderPainted(false);
btnNewButton_1.setOpaque(false);
btnNewButton_1.setBackground(Color.WHITE);
btnNewButton_1.setToolTipText(uri.toString());
btnNewButton_1.addActionListener(new theListener());
panel0.add(btnNewButton_1);
}
public static void open(URI uri) {
if (Desktop.isDesktopSupported()) {
try {
Desktop.getDesktop().browse(uri);
} catch (IOException e){
e.printStackTrace();
}
}
}
private class theListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
open(uri);
}
}
public JPanel getPanel(){
return panel0;
}
}
这是我的AboutUs代码
public About_Us() {
getContentPane().setLayout(null);
panel1 = new JPanel();
panel1.setVisible(false);
panel1.setBackground(Color.RED);
panel1.setBounds(10, 11, 430, 278);
panel1.setLayout(null);
JLabel lblAboutUs = new JLabel("ABOUT US");
lblAboutUs.setForeground(Color.GREEN);
lblAboutUs.setFont(new Font("Tahoma", Font.BOLD, 33));
lblAboutUs.setBounds(136, 11, 176, 33);
panel1.add(lblAboutUs);
JTextPane txtpnWeAre = new JTextPane();
txtpnWeAre.setFont(new Font("Tahoma", Font.ITALIC, 14));
txtpnWeAre.setBackground(Color.CYAN);
txtpnWeAre.setText("Our group's name is Process Completed. \r\nOur members are:\r\n-P\u0131nar G\u00F6ktepe\r\n-\u0130rem Herg\u00FCner\r\n-Berire G\u00FCnd\u00FCz\r\n-Mavi Nunn Polato\u011Flu\r\n-Fatih Alperen \u015Eahin\r\n-Vedat Mert \u015Een");
txtpnWeAre.setBounds(10, 77, 410, 160);
panel1.add(txtpnWeAre);
JButton btnBack = new JButton("BACK");
btnBack.setBounds(189, 244, 89, 23);
btnBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel1.removeAll();
Main_GUI Trns1=new Main_GUI();
Trns1.getPanel().setVisible(true);
repaint ();
}
});
panel1.add(btnBack);
}
public JPanel getPanel(){
return panel1;
}
}
这是我的工作代码,它结合了两者
public class WORK extends JApplet {
public static void main(String [] args) {
JFrame frame=new JFrame ();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Main_GUI m1=new Main_GUI();
frame.add(m1.getPanel());
frame.pack();
frame.setVisible(true);
}
}
答案 0 :(得分:2)
这听起来像是CardLayout manager的工作。
基本上,CardLayout允许您在更高级别的容器之间进行更改,例如另一个容器中的JPanel,以便您的主视图可以是主菜单,或者如果用户选择该主视图,则返回特定内容,并在需要时返回主菜单。 / p>