【问题标题】:JButton added, But Not Visible at runtime已添加 JButton,但在运行时不可见
【发布时间】:2013-03-10 11:43:36
【问题描述】:
public class Pencere{
    JFrame pencere = new JFrame();
    JButton buton1, buton2;

    public Pencere() {
        pencere.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pencere.setTitle("Ana Pencere");
        pencere.setBackground(Color.getHSBColor(15f, 120f, 220f));
        pencere.setLocation(new Point(500, 300));
        pencere.setSize(613, 253);
        pencere.addMouseListener(new Dinle());
        pencere.setLayout(new FlowLayout());
        pencereDegis();
    }
    public void goster(){
        pencere.setVisible(true);
    }

    public void pencereDegis(){
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (ClassNotFoundException | InstantiationException
                | IllegalAccessException | UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        buton2 = new JButton("Butonnn"); //This button not visible
        pencere.add(buton2);
        pencere.pack();
    }
}

当我运行我的应用程序(我显示 JFrame 窗口),所有代码都正常工作,但是当我没有看到“Butonnn”按钮后调用 pencereDegis() 方法时。

对不起我的英语不好谢谢大家..

【问题讨论】:

  • 什么时候调用 goster() 方法?我们可以看看你启动应用的主要方法吗?
  • 公共类 AnaMetod { public static void main(String[] args) { Pencere pencere = new Pencere(); pencere.goster(); } }
  • 只需将您在goster() 方法中编写的try-catch 块注释一会,然后运行程序。除此之外,切勿直接在JFrame 上添加组件,而是检索@ 987654325@ 使用pencere.getContentPane() 然后在Container 上添加组件。
  • 是的,我在 main 方法中编写它都可以正常工作,但我看不到 buton2 :/ 我正在尝试这个 pencere.getContentPane().add(buton2);但不工作
  • 我在我的main() 中使用此代码和pencere.goster() 进行了尝试,效果很好。关于您的LookAndFeel,请小心,因为此代码不会在每个操作系统上运行。你应该这样做:UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

标签: java swing jbutton


【解决方案1】:

此代码适用于我在 main 方法中的 goster() 调用。 buton2 按钮可见(我只是取消了您的 addMouseListener() 的注释,因为我没有 Dinle 类)。 我不确定,但这可能是因为您的LookAndFeel 声明。我有 OSX,第一次无法显示您的框架(因为您使用的是 WindowsLookAndFeel),但经过此更正后效果很好。

public class Pencere{
    JFrame pencere = new JFrame();
    JButton buton1, buton2;

    public Pencere() {
        pencere.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pencere.setTitle("Ana Pencere");
        pencere.setBackground(Color.getHSBColor(15f, 120f, 220f));
        pencere.setLocation(new Point(500, 300));
        pencere.setSize(613, 253);
        //pencere.addMouseListener(new Dinle());
        pencere.setLayout(new FlowLayout());
        pencereDegis();
    }
    public void goster(){
        pencere.setVisible(true);
    }

    public void pencereDegis(){
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException | InstantiationException
                | IllegalAccessException | UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        buton2 = new JButton("Butonnn"); //This button not visible
        pencere.add(buton2);
        pencere.pack();
    }

    public static void main(String[] args)
    {
        Pencere p = new Pencere();
        p.goster();
    }
}

【讨论】:

    【解决方案2】:
    public static void main(String[] arg)
    {
        pencereDegis();
        goster();
    }
    

    将它包含到您的代码中,它可以工作。

    【讨论】:

      猜你喜欢
      • 2012-04-15
      • 1970-01-01
      • 2020-02-07
      • 2011-08-04
      • 1970-01-01
      • 2013-03-14
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多