如何使下一个按钮转到下一帧?GUI



我如何使下一个按钮转到下一个框架在这个GUI?我需要有它,我可以点击旁边显示更多的细节:

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);
   }
}

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

JFrame f1 = new JFrame("Frame 1");JFrame = new JFrame("Frame 2");

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

有点不清楚。是否要将JButton移动到另一个JFrame?如果没有动态规划之类的东西,我想你是做不到的。

您应该查看Oracle的Swing组件教程http://docs.oracle.com/javase/tutorial/uiswing/

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

编辑

使用事件监听器(参见其他答案)并使其遵循开关情况?然后你可以让它像一个对话框一样显示,或者在你的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");
    };
}));

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

你必须在下一帧中编辑代码…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);

啊,是的…你还需要在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);
            }
            }
    });

最新更新