[JavaSwing] JPanelの
コンテンツ
JPanelを作成します。
レイアウトを設定し、ボーダー
開口部導入後 JFrameの との導入 JLabelの, JButtonの と JTextFieldを 多分あなたは、Java Swingでインターフェースを作成する方法に精通している. 頻繁に使用されるオブジェクトの導入に先立ち, 私は、我々はそれがコンテナにある非常に重要を学ぶべきだと思う (コンテナ, ホルダー) と置く レイアウト (レイアウト) コンテナ内のそれ.
JPanelはコンテナです (コンテナ) それは同様のオブジェクトを含めるために使用JFrameのそれではない 1 JFrameの. 理解しやすく、あなたが私たちの家を想像することができます 1 JFrameの, 残りの寝室, リビングルーム, JPanelのあるダイニングルーム, すなわちJFrameのにJPanelを含んでいる, 各JPanelの内のオブジェクト、あるいは他のJPanelを含むことができる.
JPanelを作成します。
我々は持っています 2 あるコンストラクタまたは使用のJPanel:
– JPanelの(): 作る 1 デフォルトのレイアウトはFlowLayoutのとJPanelのです.
– JPanelの(LayoutManagerのレイアウト): 作る 1 指定されたレイアウトでのJPanel.
例 1: 作る 1 JFrameの含む 2 JPanelの, 1 含むJPanelの JLabelの, 1 含むJPanelの 2 JButtonのは、JLabelを追加または削除できます.
package nguyenvanquan7826.JPanel; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class CreateJPanel extends JFrame implements ActionListener { private int numlabel = 0; // number JLabel in panel JPanel panel1, panel2; public CreateJPanel() { createJFrame(); } // create JFrame private void createJFrame() { setTitle("Create JPanel"); setLayout(new GridLayout(2, 1, 5, 5)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); createContent(); pack(); setLocationRelativeTo(null); setVisible(true); } private void createContent() { // create panel1 with layout default is FlowLayout panel1 = new JPanel(); // add a label into panel1 addJLabel(panel1); // create panel2 with GridLayout panel2 = new JPanel(new GridLayout(1, 2, 5, 5)); panel2.add(createJButton("Add a JLabel")); panel2.add(createJButton("Remove all JLabel")); // add panel1 and panel2 into JFrame add(panel1); add(panel2); } // add JLabel to panel and repaint private void addJLabel(JPanel panel) { panel.add(new JLabel("JLabel" + (++numlabel))); panel.validate(); panel.repaint(); } // remove all JLabel and repaint JPanel private void removeAllJLabel(JPanel panel) { panel.removeAll(); panel.validate(); panel.repaint(); numlabel = 0; } // create a JButton private JButton createJButton(String buttonName) { JButton btn = new JButton(buttonName); btn.addActionListener(this); return btn; } @Override public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); if (command == "Add a JLabel") { addJLabel(panel1); System.out.println("add" + panel1.getComponentCount()); } if (command == "Remove all JLabel") { removeAllJLabel(panel1); } } public static void main(String[] args) { new CreateJPanel(); } }
この例では、作成 2 JPanelの, パネル1は、デフォルトでは初期化されます, デフォルトのレイアウトでそれに渡さないパラメータはFlowLayoutのではない (シーケンス内のオブジェクトのレイアウト). panel2は指定されたレイアウトで初期化さGridLayoutのです (各セル内のオブジェクトの配置が等しい).
また、に注意を払う 2 顎 addJLabel(JPanelのパネル) と removeAllJLabel(JPanelのパネル), addメソッドを使用した後, またはのJPanelののremoveAll, それを変更したい (もっとJLabelの, または全体JLabelを削除する) 示す, JFrameの上の更新は、我々は呼び出す必要が 2 方法を検証() と再描画() JPanelのできるオブジェクトをレンダリングするために. 我々はまたして同じことを行うことができます JFrameの.
JPanelのためのレイアウトとボーダーを設定します
配置するには レイアウト と ボーダー 我々が使用するメソッドのJPanelのsetLayoutとsetBorder.
参照する: クラスのJPanel, パネルを使用してください
ご指導いただき、ありがとうございます ! 私にとって素晴らしい記事 !
anh giúp e với , giờ em đang có Một class JFrame chứa button và JPanelA , JPanelB sử dụng BorderLayout . e đã thực hiện được khi click button thì JPanelA sẽ được thay bằng JPanel A1 , JPanelB thay bằng JPanelB1 .
Nhưng giờ e muốn khi nhấn vào một button trên JPanelB1 thì JPanelA1 đó sẽ được thay bằng JPanelA2 có được không ? a gợi ý giúp e với .
Em làm mãi mà chẳng ra 🙂
この1あなたはJPanelB1からのJFrameのJFrameを呼び出すためのインターフェイスでコールバックメカニズムを使用することができますし、A1のためJPanelA2を交換します.
Anh giúp em với ạ, e thực hiện trên JFrame mà không chạy được. Nó báo lỗi
エラーが何であるかを見て、それをグーグルして、彼らがそれをどのように修正するかを見てください.