一个jframe中原来有个jpanel1,使用remove方法删除后,再使用add方法添加jpanel2,为什么jpanel2显示不出来 100
3个回答
展开全部
可以 的,我给你写了个例子
2个按钮事件,没做详细判断,你可以试着删除和添加,看看效果!
~有问题再留言吧,good luck!~
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private Container c = null;
private JButton b1 = null, b2 = null;
private JPanel jp1 = null, jp2 = null, jp3 = null;
public MyFrame() {
// TODO Auto-generated constructor stub
c = this.getContentPane();
c.setLayout(new BorderLayout());
b1 = new JButton("删除");
b1.addActionListener(this);
b2 = new JButton("添加");
b2.addActionListener(this);
jp1 = new JPanel();
jp1.add(new JLabel("我是JPanel一号"));
jp2 = new JPanel();
jp2.setLayout(new FlowLayout());
jp2.add(b1);
jp2.add(b2);
c.add(jp1, BorderLayout.CENTER);
c.add(jp2, BorderLayout.SOUTH);
this.setSize(500, 500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String btn = e.getActionCommand();
if("删除".equals(btn)) {
this.remove(jp1);
//重绘
this.repaint();
}
if("添加".equals(btn)) {
jp3 = new JPanel();
jp3.add(new JLabel("我是JPanel三号!"));
c.add(jp3, BorderLayout.CENTER);
this.setVisible(true);
}
}
public static void main(String[] args) {
new MyFrame();
}
}
2个按钮事件,没做详细判断,你可以试着删除和添加,看看效果!
~有问题再留言吧,good luck!~
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private Container c = null;
private JButton b1 = null, b2 = null;
private JPanel jp1 = null, jp2 = null, jp3 = null;
public MyFrame() {
// TODO Auto-generated constructor stub
c = this.getContentPane();
c.setLayout(new BorderLayout());
b1 = new JButton("删除");
b1.addActionListener(this);
b2 = new JButton("添加");
b2.addActionListener(this);
jp1 = new JPanel();
jp1.add(new JLabel("我是JPanel一号"));
jp2 = new JPanel();
jp2.setLayout(new FlowLayout());
jp2.add(b1);
jp2.add(b2);
c.add(jp1, BorderLayout.CENTER);
c.add(jp2, BorderLayout.SOUTH);
this.setSize(500, 500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String btn = e.getActionCommand();
if("删除".equals(btn)) {
this.remove(jp1);
//重绘
this.repaint();
}
if("添加".equals(btn)) {
jp3 = new JPanel();
jp3.add(new JLabel("我是JPanel三号!"));
c.add(jp3, BorderLayout.CENTER);
this.setVisible(true);
}
}
public static void main(String[] args) {
new MyFrame();
}
}
更多追问追答
追问
一定要自己手动布局吗?如果是用swing插件自动生成的布局形式,难道就看不到吗?
追答
那个插件我没用过!
好像插件只是拖拽组件,事件好像有些要自己写吧!~
如果你是初学,建议你看下底层!~
展开全部
拖动下窗口看看或者添加f.pack();
例子
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
JFrame f = new JFrame();
JPanel p = new JPanel();
p.add(new JButton("OK"));
f.add(p);
f.setVisible(true);
f.pack();
f.remove(p);
JPanel p2 = new JPanel();
p2.add(new JButton("Button 2"));
f.add(p2);
f.pack();
}
}
例子
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
JFrame f = new JFrame();
JPanel p = new JPanel();
p.add(new JButton("OK"));
f.add(p);
f.setVisible(true);
f.pack();
f.remove(p);
JPanel p2 = new JPanel();
p2.add(new JButton("Button 2"));
f.add(p2);
f.pack();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能详细说说吗,比如Jframe的布局,jpanel2布局及其里面什么组件没。如果jpanel2中什么都没有显示了你也看不到。
追问
JFrame中的布局是用swing插件生成,我没有手动布局。jpanel中每个我都放了一个标签的,里面写了些字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询