如何实现jpanel之间切换(高分在线等)

2024年11月15日 03:18
有4个网友回答
网友(1):

给你写了个简单的例子,自己看吧
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Test extends JFrame
{
JPanel contPanel = new JPanel();
JPanel pane1 = new JPanel();
JPanel pane2 = new JPanel();
JButton next = new JButton("下一个");
JButton pre = new JButton("上一个");
public Test()
{
setBounds(0,0,200,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

contPanel.add(pane1);

pane1.add(next);
pane2.add(pre);
next.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
contPanel.remove(pane1);
contPanel.add(pane2);
contPanel.revalidate();
contPanel.repaint();
}
});
pre.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
contPanel.remove(pane2);
contPanel.add(pane1);
contPanel.revalidate();
contPanel.repaint();
}
});

setContentPane(contPanel);
setVisible(true);
}
public static void main(String [] args)
{
new Test();
}
}
因为你的JPanel和JFrame是独立的类,所以可以在其中增加几个get..和set...的函数,把相应的对象赋过去

网友(2):

为何不用选项卡,好像叫JTabedPane

如果非要直接用JPanel,也可以用。
把你的那些JPanel都作为你的JFrame的属性。

然后点击时触发事件,删除不需要的选项卡,添加需要的JPanel
this.getContentPane().remove(jPanel1);
this.getContentPane().add(jPanel2);
this.validate();
差不多是这样。

网友(3):

通常这种情况我就用隐藏属性来完成

网友(4):

SWT 里面的 Composite可以实现你要的功能
SWING没研究