【问题标题】:Java GUI different pages in different classesJava GUI 不同页面中的不同类
【发布时间】:2017-07-12 14:48:17
【问题描述】:

我有一个关于 JFrame 的问题。 这是我刷新 JFrame 并从第 1 页更改到第 2 页的代码示例。 我删除了错误的组件并添加了正确的组件。在大代码中,添加什么和删除什么会非常混乱。

package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class GUI {
    public static void main (String[] args){
        GUI g = new GUI();
    }
    JFrame frame;
    JTextField page1;
    JTextField page1Text;
    JTextField page2;
    JTextField page2Text;
    JButton button1;
    JButton button2;

    public GUI(){
        frame = new JFrame();
        frame.setSize(600, 600);
        frame.setLayout(null);

        page1 = new JTextField("Page 1");
        page1.setBounds(20, 20, 100, 50);

        page1Text = new JTextField("Text 1");
        page1Text.setBounds(20, 80, 100, 50);

        page2 = new JTextField("Page 2");
        page2.setBounds(20, 20, 100, 50);

        page2Text = new JTextField("Text 2");
        page2Text.setBounds(20, 80, 100, 50);

        button1 = new JButton("Button 1");
        button1.setBounds(20, 200, 100, 50);

        button2 = new JButton("Button 2");
        button2.setBounds(130, 200, 100, 50);

        frame.add(page1);
        frame.add(page1Text);
        frame.add(button1);
        frame.add(button2);
        frame.setVisible(true);

        ActionHandler handler = new ActionHandler();
        button1.addActionListener(handler);
        button2.addActionListener(handler);
    }

    private class ActionHandler implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent event) {
            if (event.getSource() == button1){
                frame.remove(page2);
                frame.remove(page2Text);
                frame.add(page1);
                frame.add(page1Text);
                frame.repaint();
            }
            else if (event.getSource() == button2){
                frame.remove(page1);
                frame.remove(page1Text);
                frame.add(page2);
                frame.add(page2Text);
                frame.repaint();
            }
        }
    }
}

有没有办法在不同的类或构造函数或文件中创建页面并将其保存为例如 page_1。然后在 ActionHandler 中我写了

if (event.getSource() == button1){
    page_1();
    frame.repaint();
}

使框架在正确的空间中具有第 1 页的正确组件。

【问题讨论】:

标签: java swing user-interface jframe repaint


【解决方案1】:

您最好的选择听起来是将每个页面作为一个单独的类作为 jpanel,相应地设计您的面板并根据人工输入,在您的内容窗格上显示/隐藏这些面板

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2016-12-23
    • 2021-11-24
    • 2015-06-15
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多