-2

如何使下一个按钮转到此 GUI 中的下一个框架?我需要它,我可以单击下一步以显示 20 更多详细信息:

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

4 回答 4

0

有点不清楚。您想将JButton移动到另一个JFrame吗?我认为如果没有动态编程之类的东西(我猜?),你就无法做到这一点。

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

并查看您的评论。我同意拥有多个JFrame是一个坏习惯。

编辑

使用 eventlistner (请参阅其他答案)并使其遵循 switch 案例?然后在那里你可以让它像一个对话框一样显示或在你的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");

    };

}));

我随意写了这个,但我想这样的东西会起作用吗?

于 2013-04-10T09:37:53.257 回答
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);
于 2013-11-24T03:05:03.703 回答
0

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

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

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

于 2013-04-10T09:33:29.810 回答
0

啊,是的...而且您还必须在“下一步”按钮中添加一些内容...

例子:

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

    });
于 2013-11-24T03:11:19.513 回答