java jpanel移动_添加第二个JPanel时,Java CardLayout JPanel向上移动

我是Java的新手,主要是CardLayout。我只想切换由JPanels表示的“窗口”。我在CardLayout的某处读过这份工作。但我的问题是,当add

chatPanel到mainPanel(这是CardLayout之一),它改变的内容connectPanel几个像素顶端,从它的中心位置了。我在代码中跳过了createChatPanel(),它应该在的位置。

我有以下代码:

package App;

import java.awt.CardLayout;

import java.awt.Dimension;

import java.awt.GridBagLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

import Validators.*;

public class GUI {

private JFrame mainFrame = null;

private JPanel mainPanel = null;

private CardLayout cl = new CardLayout();

public GUI(){

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

}

catch (UnsupportedLookAndFeelException e) {

}

catch (ClassNotFoundException e) {

}

catch (InstantiationException e) {

}

catch (IllegalAccessException e) {

}

mainFrame = new JFrame("MainChat");

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainFrame.setSize(640,480);

mainFrame.setLocationRelativeTo(null);

mainFrame.setResizable(false);

mainFrame.setLayout(new GridBagLayout());

JMenuBar menuBar = new JMenuBar();

JMenu menuFile = new JMenu("Soubor");

JMenu menuHelp = new JMenu("Nápověda");

menuBar.add(menuFile);

menuBar.add(menuHelp);

menuFile.add(new JMenuItem("Nové Připojení"));

menuFile.add(new JSeparator());

menuFile.add(new JMenuItem("Konec"));

menuHelp.add(new JMenuItem("O programu"));

mainFrame.setJMenuBar(menuBar);

createMainPanel();

createConnectPanel();

createChatPanel();

mainFrame.setVisible(true);

}

public void createMainPanel() {

mainPanel = new JPanel(cl);

mainFrame.add(mainPanel);

}

public void createConnectPanel() {

JPanel connectPanel = new JPanel();

mainPanel.add(connectPanel,"connectPanel");

JTextField ip = new JTextField();

ip.setDocument(new JTextFieldLimit(15));

ip.setColumns(11);

JLabel iplabel = new JLabel("IP:");

connectPanel.add(iplabel);

connectPanel.add(ip);

JButton connect = new JButton("Connect");

connect.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

cl.show(mainPanel,"chatPanel");

}

});

connectPanel.add(connect);

}

public void createChatPanel(){

JPanel chatPanel = new JPanel();

mainPanel.add(chatPanel,"chatPanel");

JTextArea chatbox = new JTextArea();

chatbox.setPreferredSize(new Dimension(200,200));

chatPanel.add(chatbox);

}

}

拜托,我搞砸了吗?谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值