JAVA JPanel里怎么添加组件?
答案:7 悬赏:0 手机版
解决时间 2021-03-22 20:56
- 提问者网友:最爱你的唇
- 2021-03-22 15:12
JAVA JPanel里怎么添加组件?
最佳答案
- 五星知识达人网友:玩世
- 2021-03-22 15:28
可以用add添加组件,然后调用JPanel的remove方法,来删除组件。
例如单击某一个组件就移除这个组件,并且添加另外的组件,下面是一个具体的例子:
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.JPanel;
import javax.swing.JTextField;
public class WinTest3
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLayout(new FlowLayout());
JPanel panel = new JPanel();
JButton button = new JButton("change");
panel.add(button);
JTextField f = new JTextField(20);
ActionListener listener = new ChangeListener(button,panel,f);
button.addActionListener(listener);//注册监听器
frame.add(panel);
frame.setVisible(true);
}
}
class ChangeListener implements ActionListener
{
JButton button;
JPanel panel;
JTextField text;
public ChangeListener(JButton button, JPanel panel, JTextField text)
{
super();
this.button = button;
this.panel = panel;
this.text = text;
}
@Override
public void actionPerformed(ActionEvent e)
{
if("change".equals(e.getActionCommand()))
{
panel.remove(button);
panel.add(text);
panel.updateUI();
panel.repaint();
}
}
}
备注:需要特别注意的是移除和添加组件之后,记得重画组件。
例如单击某一个组件就移除这个组件,并且添加另外的组件,下面是一个具体的例子:
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.JPanel;
import javax.swing.JTextField;
public class WinTest3
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLayout(new FlowLayout());
JPanel panel = new JPanel();
JButton button = new JButton("change");
panel.add(button);
JTextField f = new JTextField(20);
ActionListener listener = new ChangeListener(button,panel,f);
button.addActionListener(listener);//注册监听器
frame.add(panel);
frame.setVisible(true);
}
}
class ChangeListener implements ActionListener
{
JButton button;
JPanel panel;
JTextField text;
public ChangeListener(JButton button, JPanel panel, JTextField text)
{
super();
this.button = button;
this.panel = panel;
this.text = text;
}
@Override
public void actionPerformed(ActionEvent e)
{
if("change".equals(e.getActionCommand()))
{
panel.remove(button);
panel.add(text);
panel.updateUI();
panel.repaint();
}
}
}
备注:需要特别注意的是移除和添加组件之后,记得重画组件。
全部回答
- 1楼网友:一把行者刀
- 2021-03-22 20:44
楼上说的对
- 2楼网友:人间朝暮
- 2021-03-22 20:08
p.add(b)应该放到方法或构造函数里面如
J_game { \\构造函数
p.add(b);
这样就没问题了!
楼主给分
J_game { \\构造函数
p.add(b);
这样就没问题了!
楼主给分
- 3楼网友:想偏头吻你
- 2021-03-22 19:26
如果用的是ECLIPSE用了附加组件儿的话,那直接拖揣就可以了啊
- 4楼网友:荒野風
- 2021-03-22 18:11
JPanel是中间容器,要先加载到窗体等容器后才可以向里面添加组件。必须把this.getxxx()此句代码添加放到实例JPanel的代码下一句,
示例代码:
JPanel p=new JPanel(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
this.getContentPane.add(p,BorderLayout.CENETR);
示例代码:
JPanel p=new JPanel(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
this.getContentPane.add(p,BorderLayout.CENETR);
- 5楼网友:十鸦
- 2021-03-22 16:58
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
引用这几个包
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
引用这几个包
- 6楼网友:狂恋
- 2021-03-22 15:34
在JPanel p=new JPanel(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS)); 下面添一句:
this.getContentPane.add(p,BorderLayout.CENETR),而不应该把它写在p.add(b)下面,因为JPanel是中间容器,必须要先加到窗体等容器才可以向里面添加组件.
this.getContentPane.add(p,BorderLayout.CENETR),而不应该把它写在p.add(b)下面,因为JPanel是中间容器,必须要先加到窗体等容器才可以向里面添加组件.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯