关于jframe的内容面板问题,高分求助

来源:百度知道 编辑:UC知道 时间:2024/06/19 16:18:05
我随便写了一个小程序,在开始画面里面有一个按钮,点击后出现新的画面。
其实本来要写一个程序,开始是登录界面,输入信息后进入主页面。就先写个小程序测试一下能不能实现窗口内容的改变。

程序很简单,相信大家都能看明白,关键问题在于getContentPane和setContentPane这两个的问题。用setContentPane就可以显示,但是用getContentPane就不可以。

还有就是如果我要实现窗口内容的改变有其它方法吗

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

//程序运行后首先进入登录界面,点击Log on按钮后进入主界面
class FrameChange extends JFrame {
private JPanel contentpane = new JPanel();
private JButton login = new JButton("Login on");

void init() {
setSize(600,400);
setLocation(100,100);
setTitle("Test");
setBackground(Color.gray);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentpane.add(login);
login.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MainPanel mp = new MainPanel();
//getContentPane().add(mp); //如果用这行获取内容面板,运行后点击按钮无法显示新的内容
setContentPane

我已经帮你改好了,可以显示正确了,你看看我注释的地方,还有一点就是,你要知道一些容器的默认布局,frame是borderlayout ,panel是folowlayout

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

//程序运行后首先进入登录界面,点击Log on按钮后进入主界面
class FrameChange extends JFrame {
private JPanel contentpane = new JPanel();

private JButton login = new JButton("Login on");

void init() {
setSize(600, 400);
setLocation(100, 100);
setTitle("Test");
setBackground(Color.gray);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentpane.add(login);
login.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MainPanel mp = new MainPanel();
mp.add(new JLabel("Hello,this is MainPanel"));
setContentPane(mp);
// getContentPane().add(mp,BorderLayout.CENTER); //如果用这行获取内容面板,运行后点击按钮无法显示新的内容
//paint();//要添加此句,让frame刷新下
//如果你要