gpt4 book ai didi

java - 单击按钮更改面板大小

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:38 25 4
gpt4 key购买 nike

我有以下代码:

package in.res.num.tapb.ui;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class MainClass extends JPanel {
public MainClass() {
Registration registration = new Registration();
ButtonPanel buttonPanel = new ButtonPanel();
buttonPanel.setRegistration(registration);

buttonPanel.setBorder(BorderFactory.createTitledBorder("Button Panel"));
registration.setBorder(BorderFactory.createTitledBorder("Registration Panel"));

setLayout(new BorderLayout());
add(registration, BorderLayout.CENTER);
add(buttonPanel, BorderLayout.SOUTH);
}

private static void createAndShowUI() {
JFrame frame = new JFrame("Registration");
frame.getContentPane().add(new MainClass());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}

@SuppressWarnings("serial")
private class ButtonPanel extends JPanel {
private Registration registration;

public ButtonPanel() {
setLayout(new GridLayout(1, 0, 10, 0));
for (final String keyText : Registration.KEY_TEXTS) {
JButton btn = new JButton(keyText);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (registration != null) {
registration.swapView(keyText);
}
}
});
add(btn);
}
}

public void setRegistration(Registration registration) {
this.registration = registration;
}
}

private static class Registration extends JPanel {
private static final Dimension PREF_SIZE = new Dimension(450, 300);
public static final String USER_AGREEMENT = "User Agreement";
public static final String USER_INFO = "User Information";
public static final String ENROLLMENT = "Enrollment";
public static final String[] KEY_TEXTS = { USER_AGREEMENT, USER_INFO, ENROLLMENT };
private CardLayout cardlayout = new CardLayout();
private JPanel cards = new JPanel(cardlayout);

public Registration() {
cards.add(createUserAgreePanel(), USER_AGREEMENT);
cards.add(createUserInfoPanel(), USER_INFO);
cards.add(createEnrollmentPanel(), ENROLLMENT);
setLayout(new BorderLayout());
add(cards, BorderLayout.CENTER);
}



private JPanel createEnrollmentPanel() {
JPanel enrol = new JPanel();
enrol.setSize(new Dimension(400, 200));
enrol.add(new JLabel("Enrollment"));
return enrol;
}

private JPanel createUserAgreePanel() {
JPanel userAgree = new JPanel();
userAgree.setSize(new Dimension(200, 300));
userAgree.add(new JLabel("User Agreement"));
return userAgree;
}

private JPanel createUserInfoPanel() {
JPanel userInfo = new JPanel();
userInfo.setSize(new Dimension(300, 400));
userInfo.add(new JLabel("User Information"));
return userInfo;
}

public void swapView(String key) {
cardlayout.show(cards, key);
}

}

}

如您所见,我想在单击按钮时更改大小。是否可以?上面的代码不起作用,我的意思是尺寸没有改变。如何即时更改尺寸?

感谢和问候。编辑:

在选择一行 JList 时切换面板。

    getChoicesList().addListSelectionListener(new ListSelectionListener() {

@Override
public void valueChanged(ListSelectionEvent listSelectionEvent) {
getViewPanel().changeView(getChoicesList().getSelectedIndex());
getChoicePanel().changeView(Constants.PanelInfo.valueOf(getEngine().getChoiceList().get(getChoicesList().getSelectedIndex()).getEnumName()).getDimensionForScrollPaneOfChoicePanel());
((MainFrame) getTopLevelAncestor()).pack();
}
});

ViewPanel#changeView(),这会交换面板:

public void changeView(int index) {
removeAll();
getPanels().get(index).setPreferredSize(Constants.PanelInfo.valueOf(getEngine().getChoiceList().get(index).getEnumName()).getDimensionForViewPanel());
add(getPanels().get(index));
}

最佳答案

调整 JFrame 的大小后,使用: 你的框架.validate();

关于java - 单击按钮更改面板大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7059278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com