关于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刷新下
//如果你要