当前位置: 首页 > 知识库问答 >
问题:

Java Swing。从JButton打开一个新的JPanel并使按钮变得漂亮

单昊穹
2023-03-14

我正在尝试建立一个小程序,有一个主GUI与2个按钮。一个按钮关闭程序,另一个我想打开一个新的JPanel将有文本字段等。

我希望能够使按钮,所以他们看起来像正常的应用按钮,我猜,漂亮和正方形,等大小等,我不确定如何做到这一点。

此外,我不确定如何通过单击按钮打开一个新的JFrame。

package practice;

public class UserInterface extends JFrame {

    private JButton openReportSelection = new JButton("Open new Window");
    private JButton closeButton = new JButton("Close Program");

    private JButton getCloseButton() {
        return closeButton;
    }

    private JButton getOpenReportSelection() {
        return openReportSelection;
    }

    public UserInterface() {
        mainInterface();

    }

    private void mainInterface() {
        setTitle("Program Information Application");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel centerPanel = new JPanel(new GridLayout(0, 3));

        centerPanel.add(openReportSelection);
        centerPanel.add(closeButton);
        getCloseButton().addActionListener(new Listener());
        add(centerPanel, BorderLayout.CENTER);
        setSize(1000, 200);
        setVisible(true);
    }

    private void addReportPanel() {
        JPanel reportPanel = createNewPanel();
        getContentPane().add(reportPanel, BorderLayout.CENTER);

    }

    private JPanel createNewPanel() {
        JPanel localJPanel = new JPanel();
        localJPanel.setLayout(new FlowLayout());
        return localJPanel;
    }

}
package practice;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Listener implements ActionListener {


    public void actionPerformed(ActionEvent ae) {       
           System.exit(0);
    }    



}

共有1个答案

施驰
2023-03-14

首先使用不同的布局管理器,FlowLayoutGridBagLayout可能更好地工作

JPanel centerPanel = new JPanel(new FlowLayout());
centerPanel.add(openReportSelection);     
centerPanel.add(closeButton);    

这些布局将尊重您的按钮的首选大小

至于打开另一个窗口,嗯,你已经创建了一个,所以这个过程几乎是一样的。说到这里,您可能会考虑看看多个JFrames的使用:好的实践还是坏的实践?在你向FARpromise之前。

 类似资料:
  • 例如,假设JFrame类称为frame,两个JPanel类称为panel1和Panel2。如果在panel1中点击了一个按钮,你如何告诉框架移除panel1并添加Panel2?

  • 我刚刚接触Java,正在为我的大学班级做一个项目。我正在开发一款百万富翁游戏,但是我被卡住了。 我有一个JFrame类,其中我有2个面板。第一个由按钮组成,第二个是我想通过按下按钮来更改的面板。按钮具有自己的类及其构造函数,面板也是如此,因为它们具有不同的布局。我需要在按钮类中创建一个方法,以从框架中删除第二个面板并添加第三个面板(在另一个更JPanel类中描述)。因此,从技术上讲,我需要从按钮类

  • 嘿,我正在做一个java项目,我会试着把我的问题概括出来... 我有一个jpanelX,其中包含juckons1到5。所有这些按钮都连接到相同的actionlistener和相同的操作执行方法。我还将点击的按钮的来源保存到全局字符串变量中。 我有另一个JpanelY。JpanelY包含字符串数组。 我想将这两种行为联系起来: > 用户点击JpanelX上的按钮 显示的是JpanelY而不是Jpan

  • 问题内容: 不幸的是,我必须在该程序中使用多个窗口,而且我认为CardLayout不能正常工作,因为在不同布局之间我无法保持任何按钮不变。因此,我尝试编写一个按钮以隐藏当前的JPanel(thePanel)并显示一个新的JPanel(thePlacebo)。 我试图在这样的ActionListener中隐藏thePanel: 我以为这可以用,但是只要按一下按钮,它就会冻结程序。 这是上下文代码的一

  • 我创建了一个用于登录,我想在按钮“cont nou”被按下后用jpanel为新帐户打开一个新窗口,但不知道如何用jpanel将初始帧消失和出现。你有什么想法吗?谢谢你!这就是我到现在所做的: 这是,其登录名为:

  • 所以我试图让我的按钮在我的导航抽屉碎片中打开新的活动,但是我的mainactivity中有什么东西坏了。java 我的mainactivity.java.... 我的奖励碎片... } 问题是它在下有一个红色下划线,我不知道如何修复它 我试过了所有的办法,这就是我目前所拥有的… } 我的setContentView是鲜红的,我的findViewByID是红色的,最后是(rewardsFragmen