#java #swing #jpanel #jbutton
#java #качели #jpanel #кнопка jbutton
Вопрос:
Я пытаюсь добавить несколько кнопок, которые отображают информацию из метода, который у меня есть в другом классе. Я уже создал Jpanel и 2 подпанели, и я пытаюсь получить доступ к методу из класса student. Теперь я пытаюсь создать ученика на главной панели и добавить кнопки на подпанели. Теперь я знаю, что это включает в себя точечную операцию, но по какой-то причине я не могу найти правильный синтаксис.
Код, если это поможет:
Master Panel
import java.awt.*;
import javax.swing.*;
public class myJPanel extends JPanel
{
public myJPanel ()
{
super ();
GridLayout grid = new GridLayout(1,1);
setLayout(grid);
setBackground(Color.green);
student st1 = new student("Dan", "Smith", 27);
PanelLeft top = new PanelLeft();
PanelRight bottom = new PanelRight();
add(top);
add(bottom);
}
}
Вложенная панель 1
import java.awt.*;
import javax.swing.*;
public class PanelLeft extends JPanel
{
public PanelLeft ()
{
super ();
GridLayout grid = new GridLayout(1,1);
setLayout(grid);
setBackground(Color.pink);
JButton jb1 = new JButton(st1.getInfo());
add(jb1, "Center");
}
}
Вложенная панель 2
import java.awt.*;
import javax.swing.*;
public class PanelRight extends JPanel
{
public PanelRight ()
{
super ();
GridLayout grid = new GridLayout(10,1);
setLayout(grid);
setBackground(Color.red);
JButton jb1 = new JButton(st1.whatsUp());
JButton jb2 = new JButton(st1.whatsUp());
JButton jb3 = new JButton(st1.whatsUp());
JButton jb4 = new JButton(st1.whatsUp());
JButton jb5 = new JButton(st1.whatsUp());
JButton jb6 = new JButton(st1.whatsUp());
JButton jb7 = new JButton(st1.whatsUp());
JButton jb8 = new JButton(st1.whatsUp());
JButton jb9 = new JButton(st1.whatsUp());
JButton jb10 = new JButton(st1.whatsUp());
add(jb1);
add(jb2);
add(jb3);
add(jb4);
add(jb5);
add(jb6);
add(jb7);
add(jb8);
add(jb9);
add(jb10);
}
}
Класс ученика
public class student
{
String firstName;
String lastName;
int Age;
double r;
int myNumber;
student(String a, String b, int x)
{
firstName = a;
lastName = b;
Age = x;
}
String getInfo()
{
return "NAME = " firstName " " lastName " " "Age = " Age;
}
String whatsUp()
{
double r;
int myNumber;
String[] acts = new String[5];
acts[0] = " is fishing";
acts[1] = " is studying";
acts[2] = " is running";
acts[3] = "is interacting";
acts[4] = "is talking";
r = Math.random();
myNumber = (int) (r * 5.0);
return (acts[myNumber]);
}
}
Ответ №1:
Основная проблема st1
заключается в том, что не определено в PanelRight
и PanelLeft
. Вам нужно передать ссылку student
на то, что вы хотите использовать, например…
student st1 = new student("Dan", "Smith", 27);
PanelLeft top = new PanelLeft(st1);
PanelRight bottom = new PanelRight(st1);
PanelLeft
…
public class PanelLeft extends JPanel
{
public PanelLeft (student st1)
{
//...
JButton jb1 = new JButton(st1.getInfo());
PanelRight
…
public class PanelRight extends JPanel
{
public PanelRight (student st1)
{
//...
JButton jb1 = new JButton(st1.whatsUp());
JButton jb2 = new JButton(st1.whatsUp());
JButton jb3 = new JButton(st1.whatsUp());
JButton jb4 = new JButton(st1.whatsUp());
JButton jb5 = new JButton(st1.whatsUp());
JButton jb6 = new JButton(st1.whatsUp());
JButton jb7 = new JButton(st1.whatsUp());
JButton jb8 = new JButton(st1.whatsUp());
JButton jb9 = new JButton(st1.whatsUp());
JButton jb10 = new JButton(st1.whatsUp());
Вы также можете захотеть ознакомиться с соглашениями о коде для языка программирования Java TM, что облегчит людям чтение вашего кода…