gpt4 book ai didi

java - 向 JDialog 添加按钮?

转载 作者:行者123 更新时间:2023-12-01 06:36:44 25 4
gpt4 key购买 nike

我正在尝试在 JDialog 上创建 JButton,但是该按钮将覆盖整个 JDialog,对此有什么帮助吗?这是它的样子:

enter image description here

这就是我创建 JDialog 和 JButton 的方法:

class MenuStoreHandler implements ActionListener{
public void actionPerformed(ActionEvent e){

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth = (int) dim.getWidth();
int screenHeight = (int) dim.getHeight();

JDialog g = new JDialog();
g.setTitle("The Store");
g.setSize(200, 200);
g.setLocation(screenWidth / 2 - 150, screenHeight / 2 - 150);

JButton b = new JButton("Buy");
b.addActionListener( new StoreItem1Handler() );
b.setVisible(true);
g.add(b);

g.setVisible(true);
}
}

我将发布我的完整 MrStan.class,这里是:

package Progress;

public class MrStan extends JPanel{

private Timer timer = new Timer();
public static int points;
static File h = new File("text.txt");
public ImageIcon bg = new ImageIcon("D:/MrStan/bg.png");
static JMenuBar menubar;
Formatter x;
JMenu menu;
JMenuItem menuitem;

double version = 0.3;

class todoTask extends TimerTask{
public void run(){
points += 1;
repaint();
}
}

public int getPoints(){
return points;
}

public void setPoints( int points ){
this.points = points;
}

public MrStan(){
setIgnoreRepaint(true);

menubar = new JMenuBar();
menu = new JMenu("Menu");
menu.setMnemonic(KeyEvent.VK_F);
menu.getAccessibleContext().setAccessibleDescription("Menu");
menubar.add(menu);

menuitem = new JMenuItem("Store (S)", new ImageIcon("coins.png"));
menuitem.setMnemonic(KeyEvent.VK_S);
menuitem.addActionListener( new MenuStoreHandler() );
menu.add(menuitem);

menuitem = new JMenuItem("Reset Points (R)", new ImageIcon("delete.png"));
menuitem.setMnemonic(KeyEvent.VK_R);
menuitem.addActionListener( new MenuResetPointHandler() );
menu.add(menuitem);

// add a separator
menu.addSeparator();

menuitem = new JMenuItem("Exit (E)", new ImageIcon("cross.png"));
menuitem.setMnemonic(KeyEvent.VK_E);
menuitem.addActionListener( new MenuExitHandler() );
menu.add(menuitem);

timer.schedule(new todoTask(), 0, 2000);

}

class MenuStoreHandler implements ActionListener{
public void actionPerformed(ActionEvent e){

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth = (int) dim.getWidth();
int screenHeight = (int) dim.getHeight();

JDialog g = new JDialog();
g.setTitle("The Store");
g.setSize(200, 200);
g.setLocation(screenWidth / 2 - 150, screenHeight / 2 - 150);

JButton b = new JButton("Buy");
b.addActionListener( new StoreItem1Handler() );
b.setVisible(true);
g.add(b);

g.setVisible(true);
}
}

class StoreItem1Handler implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("Store-Button 1 pressed.");
}
}

class MenuExitHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(1);
}
}

class MenuResetPointHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
points = 0;
repaint();
JOptionPane.showMessageDialog(null, "Points have been reset.");
}
}

public void paint(Graphics g){
g.setColor(Color.WHITE);
bg.paintIcon(this,g,0,0);
g.setColor(Color.BLACK);
g.drawString("Points: " + points, 75, 95);
g.drawString("Version: " + version, 2, 10);
}

public static void main(String[] args){

final MrStanCreateFile g = new MrStanCreateFile();

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
public void run(){
if(h.exists()){
g.openFile();
g.addRecords();
g.closeFile();
}else{
System.out.println(h.getName() + "does not exist, not saving.");
}
}
}, "Shutdown-thread"));

readIt();

//Create new JFrame
JFrame frame = new JFrame();
frame.setTitle("MrStan");
frame.setSize(200, 200);
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setJMenuBar(menubar);

//Set location of JFrame
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth = (int) dim.getWidth();
int screenHeight = (int) dim.getHeight();
frame.setLocation(screenWidth / 2 - 200, screenHeight / 2 - 200);

//Set ContentPane to JPanel
MrStan panel = new MrStan();
frame.setContentPane(panel);

//Make the user not be able to resize
frame.setResizable(false);

//Make the JFrame visible
frame.setVisible(true);
}

public static void readIt(){
MrStanReadFile r = new MrStanReadFile();
r.openFile();
r.readFile();
r.closeFile();
}

}

为什么这会覆盖我的整个 JDialog?我正在使用基本的布局管理器,它应该没问题。

最佳答案

尝试先将按钮添加到 contentPane,然后再设置边界。

Container pane = dialog.getContentPane();
pane.setLayout(null);
JButton button = new JButton("Testbutton!");
pane.add(button);
button.setBounds(10,10,40,40);

关于java - 向 JDialog 添加按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5837067/

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