私は何か超基本的なものを作成しようとしていますが、非常に不満を抱いた後、GridLayoutボタンを使って複数のJPanelを表示するには
望ましい結果:今ここに
は私のコードです:
GUIクラス
package bookingProject;
import java.awt.Color;
import javax.swing.JPanel;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
public class GUI extends javax.swing.JFrame {
JFrame frame = new JFrame();
JPanel silverPanel = new JPanel();
JPanel goldPanel = new JPanel();
Button buttons[] = new Button[30];
public static void main(String args[]) {
new GUI();
}
public GUI() {
setSize(500, 500);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel bronzePanel = new JPanel();
bronzePanel.setLayout(new GridLayout(3, 10));
bronzePanel.setBackground(Color.red);
for (int i = 0; i < 30; i++) {
buttons[i] = new Button();
bronzePanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
bronzePanel.add(buttons[i]);
}
add(bronzePanel);
setVisible(true);
silverPanel.setLayout(new GridLayout(3, 10));
silverPanel.setBackground(Color.yellow);
for (int i = 0; i < 30; i++) {
buttons[i] = new Button();
silverPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
silverPanel.add(buttons[i]);
}
add(silverPanel);
setVisible(true);
goldPanel.setLayout(new GridLayout(3, 10));
goldPanel.setBackground(Color.green);
for (int i = 0; i < 30; i++) {
buttons[i] = new Button();
goldPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
goldPanel.add(buttons[i]);
}
add(goldPanel);
setVisible(true);
}
}
そして、私は
を使用したいボタンのクラスボタンクラス
package bookingProject;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Button extends JButton implements ActionListener{
public Button(){
this.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
Object source = e.getSource();
if (source instanceof GUI){
((GUI)source).setBackground(Color.YELLOW);
}
}
}
このは私が取得していますものです:ので、私の完全な無知/能力を許す
私はこのようなものに新しいブランドだ...しかし、私は希望して行く3枚のパネルです上から下へ(ブロンズ/シルバー/ゴールド)、それぞれグリッドレイアウトのボタンが付いています...しかし、私が得ることのできるのは、他のすべてのものの真ん中に貼っているブロンズパネルだけです。私はBoxLayoutを使用して3つのパネルを並べ替えることになっていると思いますが、これを約4時間使って遊んでいました。
私はそれらを押してもボタンが黄色に変わる方法が必要ですが、現在は機能していません。私はそれをほとんど見ていませんでした。
_psst_ [コード](http://stackoverflow.com/a/40777221/2575725)と[ビデオ](https://でyoutu .be/9pQEF_phhAs) – Arvind
あなたの投稿は役に立ちましたか? – Arvind