3

JPanelをJFrameに追加するにはどうすればよいですか?それは本当に私を混乱させます。JFrameにJPanelを追加したい。私はエクステンドを含むあらゆる種類のことを試しましたが、それを機能させることができません。

イベント

import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

    public class events {


public static void main (String args[]) {
 Time timeObject = new Time();

    JFrame mainJFrame;
    mainJFrame = new JFrame();
    mainJFrame.setLayout(BorderLayout());
    mainJFrame.setVisible(true);        
    mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainJFrame.setSize(600,400);
    mainJFrame.setVisible(true); 
    mainJFrame.setLayout(new BorderLayout());
    mainJFrame.setTitle("Travel Agent System");
    mainJFrame.setBackground(Color.BLUE);
    timeObject.selectButton();
}
}

時間

    import javax.swing.JOptionPane;

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

public class Time{

  public static void selectButton()
  JButton timeButton = new JButton("Time");
  JButton moneyButton = new JButton("Money");
  JButton hotelButton = new JButton("Hotel");
  JButton exitButton = new JButton("Exit");
   JPanel buttonPanel = new JPanel();
  buttonPanel.setBackground(Color.RED);
  buttonPanel.add(timeButton,moneyButtons,hotelButton,exitButton);

  }
4

3 に答える 3

11

このソースをご覧ください。コメントに注意してください。

import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class events {

    public static void main (String args[]) {
        Time timeObject = new Time();

        JFrame mainJFrame;
        mainJFrame = new JFrame();
        // Coding by magic!
        //mainJFrame.setLayout(BorderLayout());
        mainJFrame.setLayout(new BorderLayout());
        mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // don't do this, just call pack() later
        //mainJFrame.setSize(600,400);
        mainJFrame.setLayout(new BorderLayout());
        mainJFrame.setTitle("Travel Agent System");
        mainJFrame.setBackground(Color.BLUE);

        timeObject.selectButton();
        mainJFrame.add(timeObject.getGUI());

        mainJFrame.pack();
        // should be last.
        mainJFrame.setVisible(true);
    }
}

class Time {

    private JPanel buttonPanel;

    // don't use static unless necessary - it is not necessary.
    //public static void selectButton() {
    public void selectButton() {
        JButton timeButton = new JButton("Time");
        JButton moneyButton = new JButton("Money");
        JButton hotelButton = new JButton("Hotel");
        JButton exitButton = new JButton("Exit");
        buttonPanel = new JPanel();
        buttonPanel.setBackground(Color.RED);
        buttonPanel.add(timeButton);
        buttonPanel.add(moneyButton);
        buttonPanel.add(hotelButton);
        buttonPanel.add(exitButton);
    }

    public JComponent getGUI() {
        return buttonPanel;
    }
}
于 2013-03-18T16:56:28.337 に答える
3

JFrameオブジェクトをselectButton()に渡します:

timeObject.selectButton(mainJFrame);

次に、そのJFrameオブジェクトを使用してJPanelを追加します。

public static void selectButton(JFrame frame)
  {
    JButton timeButton = new JButton("Time");
    JButton moneyButton = new JButton("Money");
    JButton hotelButton = new JButton("Hotel");
    JButton exitButton = new JButton("Exit");
    JPanel buttonPanel = new JPanel();
    buttonPanel.setBackground(Color.RED);
    buttonPanel.add(timeButton,moneyButtons,hotelButton,exitButton);
    frame.getContentPane().add(buttonPanel,BorderLayout.CENTER); // i've added to CENTER.
  }

これにより、JPanelがJFrameのCENTERに追加されます。

于 2013-03-18T16:42:44.680 に答える
0

これは、JFrameクラスを実装してから、JPanelsをJFrameおよび他のJPanelsに追加する良い例です。

別のStackOverflowの質問/回答へのリンク

于 2013-03-18T16:42:30.423 に答える