好的,所以我正在尝试制作一个Flash卡程序,我希望它能够在单击添加设置(或新的卡片组)时添加一个按钮来表示底部的设置。框架。
我现在所拥有的只会在调整帧大小后显示按钮。我真的不知道我正在对面板做什么,因为我还没弄清楚如何正确布置所有部件。
我需要程序在设置完成后在底部面板中显示设置图标。
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GraphicsUI extends JPanel {
private DeckList setsList;
CardActions action = new CardActions();
JButton addSetButton, addCardButton;
private JLabel label;
private JPanel bottomPanel;
public GraphicsUI(){
this.setPreferredSize(new Dimension(1000,825));
this.setBackground(Color.LIGHT_GRAY);
this.label = new JLabel();
label.setOpaque(true);
label.setBackground(Color.white);
label.setPreferredSize(new Dimension(600, 400));
ImageIcon img = new ImageIcon("setIcon.png");
//make that set image at bottom
this.addSetButton = new JButton("Add Set");
// this.addSetButton.setBackground(Color.white);
// this.addSetButton.setPreferredSize(new Dimension(240, 180));
this.add(addSetButton, BorderLayout.WEST);
this.addSetButton.addActionListener(new ButtonListener());
this.addCardButton = new JButton("Add Card");
// this.addCardButton
this.add(label);
JLabel blah = new JLabel();
blah.setPreferredSize(new Dimension(1000,30));
this.add(blah);
this.bottomPanel = new JPanel();
this.bottomPanel.setPreferredSize(new Dimension(1000, 400));
this.add(bottomPanel);
}
public class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
action.setCommand(CardActions.Command.ADDSET);
action.setList(getSetInfo());
}
}
private CardList getSetInfo(){
CardList cl = new CardList();
String setName = JOptionPane.showInputDialog("Enter the name of your set.");
if(setName.isEmpty()){
JOptionPane.showMessageDialog(this, "Cannot have an empty set.");
}
cl.setSetName(setName);
ImageIcon img = new ImageIcon("setIcon.png");
bottomPanel.add(new JButton(img));
return cl;
}
}
答案 0 :(得分:1)
添加完按钮后,尝试调用容器上的revalidate
来更新容器层次结构。
您可能还会发现使用setPreferredSize
可能没有足够的空间让新按钮出现
答案 1 :(得分:0)
你应该创建一个新的jpanel,它只包含可以将你带到用户创建的特定集的按钮。更新jpanel只需调用repaint()