【问题标题】:Invisible JRadioButtons不可见的 JRadioButtons
【发布时间】:2013-04-12 00:53:03
【问题描述】:

我有三个不同的 JRadioButton,它们都添加到一个 JPanel。当我将 JPanel 添加到 JFrame 时,只显示 lvl3 JRadioButton。如果我将该行注释掉,则不会显示任何按钮。有什么我正在做的事情吗?还是应该使用 JRaduiButtonGroups?

import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.Timer;


public class CastleDefenders {
static Timer timer;
Toolkit tlkt;
private JMenuBar mb2 = new JMenuBar();
private static boolean startGame = false;
private static JFrame f = new JFrame("Castle Defenders");
private static JFrame g = new JFrame("Castle Defenders");
private JRadioButton lvl1 = new JRadioButton("Easy");
private JRadioButton lvl2 = new JRadioButton("Normal");
private JRadioButton lvl3 = new JRadioButton("Hard");
private JPanel pnl = new JPanel();
private JTextField lbl = new JTextField("Welcome to Castle Defenders!");
private JButton btn = new JButton("START");
private JMenuBar mb = new JMenuBar();
private JMenu mnuFile = new JMenu("File");
private JPanel pnl2 = new JPanel();
private JMenuItem mnuItemQuit = new JMenuItem("Quit");
private JMenu mnuHelp = new JMenu("Help");
private JMenuItem mnuItemAbout = new JMenuItem("About");

public CastleDefenders(){
    lvl1.setToolTipText("Play the game on Easy");
    lvl2.setToolTipText("Play the game on Normal");
    lvl3.setToolTipText("Play the game on Hard");
    pnl2.add(lvl1);
    pnl2.add(lvl2);
    pnl2.add(lvl3);
    tlkt = Toolkit.getDefaultToolkit();
    timer = new Timer();
    pnl2.setBounds(50, 5, 1, 10);
    btn.setBounds(220, 240, 5, 1);
    f.setJMenuBar(mb2);
    g.setJMenuBar(mb2);
    mnuFile.add(mnuItemQuit);
    mnuHelp.add(mnuItemAbout);
    mb.add(mnuFile);
    mb.add(mnuHelp);
    mb2.add(mnuFile);
    mb2.add(mnuHelp);
    pnl.add(btn);
    pnl2.add(lbl);
    lbl.setBounds(0, 240, 10, 2);
    lbl.setEditable(false);
    f.getContentPane().setLayout(new BorderLayout());
    f.getContentPane().add(pnl, BorderLayout.CENTER);       
    f.addWindowListener(new ListenCloseWdw());
    g.getContentPane().setLayout(new BorderLayout());
    g.getContentPane().add(pnl2);   
    g.addWindowListener(new ListenCloseWdw());
    mnuItemAbout.addActionListener(new GetAboutInfo());     
    btn.addActionListener(new GetButtonClick());    
    mnuItemQuit.addActionListener(new ListenMenuQuit());


}

public class GetButtonClick implements ActionListener{
    public void actionPerformed(ActionEvent e){
        startGame = true;
        //JOptionPane.showMessageDialog(null, "WIP");
    }
}
public class GetAboutInfo implements ActionListener{
    public void actionPerformed(ActionEvent e){
        JOptionPane.showMessageDialog(null, "Made By Byron Lathi");
    }
}
public class ListenCloseWdw extends WindowAdapter{
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
}
public class ListenMenuQuit implements ActionListener{
    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}
public void launchFrameF(){
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.pack();
    f.setBounds(0, 0, 640, 680);
}
public void launchFrameG(){
    g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    g.pack();
    g.setBounds(0, 0, 640, 680);
    g.getContentPane().add(lvl1).setBounds(1, 1, 1, 1);
    g.getContentPane().add(lvl2).setBounds(2, 2, 1, 1);
    g.getContentPane().add(lvl3).setBounds(3, 3, 1/2, 1/2);

}
public static void main(String args[]) {
    final CastleDefenders main = new CastleDefenders();
    main.launchFrameF();
    f.setVisible(true);
    do {
        System.out.print("");
    }while(startGame == false);
    if (startGame == true){
        JOptionPane.showMessageDialog(null, "We've come so far...");
        f.setVisible(false);
        main.launchFrameG();
        g.setVisible(true);
    }

}

}

【问题讨论】:

    标签: java swing jframe invisible jradiobutton


    【解决方案1】:

    在您的代码中,您已经在 pnl2 JPanel 中有这些单选按钮,并且该面板已添加到框架内容窗格中。通过在 launchFrameG() 方法中调用 getContentPane().add() 方法再次重新添加单选按钮会替换框架的内容窗格,这会使您的面板被替换。仅添加最后添加的组件仍保留在内容窗格中。

    【讨论】:

    • 非常感谢!我没有注意到我添加了两次。我有一个问题:如果我将它添加到 JRadioButtonList 那么我可以删除单个按钮并添加一个列表吗?谢谢你这么快的回复,这是我的第一篇文章。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2017-09-26
    • 2017-02-26
    • 1970-01-01
    • 2016-08-15
    • 2015-04-02
    相关资源
    最近更新 更多