如何让下一个按钮进入下一帧? GUI

时间:2013-04-10 09:23:00

标签: java user-interface

如何让下一个按钮转到此GUI中的下一个Frame?我需要在我可以点击旁边的地方显示更多详细信息:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FilledFrameViewer
{
   public static void main(String[] args)
   {
      JFrame frame = new JFrame();

      /*JButton button = new JButton*/
      JButton nextButton = new JButton("NEXT");
      JLabel label = new JLabel("Frame 1.");

      JPanel panel = new JPanel();
      panel.add(nextButton);
      panel.add(label);
      frame.add(panel);

      final int FRAME_WIDTH = 300;
      final int FRAME_HEIGHT = 100;
      frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
      frame.setTitle("A frame with two components");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      frame.setVisible(true);
   }
}

4 个答案:

答案 0 :(得分:1)

啊,是的......而且你还需要在Next按钮中添加一些内容......

示例:

 btnNext = new JButton();
    btnNext.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            goNext();
            {
                private void goNext(){
                                    NextFrame nextframe= new NextFrame(null);
                                    nextframe.setVisible(true);
            }
            }

    });

答案 1 :(得分:0)

如果要隐藏或显示框架,可以像这样使用

JFrame f1 =新JFrame(“第1帧”); JFrame f2 =新JFrame(“第2帧”);

隐藏f1,调用f1.setVisible(false); 要显示f2,请调用f2.setVisible(true);

答案 2 :(得分:0)

有点不清楚。您想将 JButton 移动到另一个 JFrame 吗?如果没有动态编程等,我认为你无法管理(我猜?)。

您应该查看来自Oracle http://docs.oracle.com/javase/tutorial/uiswing/

的Swing组件的教程

看看你的评论。我同意多个 JFrame 是一个坏习惯。

修改

使用eventlistner(参见其他答案)并按照开关案例进行操作?那么你可以让它显示为对话框或更改 JFrame 中的 JLable 吗?

对话教程:http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html。 我认为你应该选择一个标签来改变它的文字。

JButton nextButton = new JButton("Next");
nextButton.addActionListener(new ActionListner(

private int counter = 0;

public void actionPerformed(ActionEvent e) { 

    counter++;

    switch(counter){

        case 1: somelable.setText("Your text here");

    };

}));

我是徒手写的,但我觉得这样的东西会起作用吗?

答案 3 :(得分:0)

你必须在下一帧中编辑代码...... NextFrame的示例,

public class NextFrame
   public static void main(String[] args)
   {
      private static FilledFrameViewer parentFrame; //ADD THIS FOR CONNECTION TO FIRST FRAME

        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    NextFrame frame = new NextFrame(null); //CHANGES MADE HERE
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }

      public NextFrame(FilledFrameViewer f) { //CHANGES MADE HERE
      this.parentFrame = f; //CHANGES MADE HERE
        setTitle("Personal Assistant");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);