Это мое первое сообщение, но отчаянные времена требуют отчаянных ходов. Моя проблема в том, что я создал JFrame с кнопками и другими, которые выполняют мой проект (каждая следующая кнопка показывает, когда нажимается предыдущая (код состоит из , если и еще). Когда предпоследняя кнопка (последняя еще) щелкнули по последней части проекта и показывают, давайте назовем его кнопкой «Создать диаграмму». Я хочу сделать это, чтобы показать новый кадр после нажатия этой кнопки, которая покажет диаграмму в новой . рамка Вот мой код (сокращенный и упрощенный, чтобы показать идею.):Кнопка JAVA внутри кадра создает диаграмму
public class clazz extends JFrame
{
static JButton // my buttons
static JLabel //my labels
static JCheckBox // my checkBoxes
static JTextField // my textfields
public double //declaration of my variables
public clazz()
{
setSize(1600,900);
setTitle("Project");
setLayout(null);
// created and set up lots of buttons/labels/textfields etc.
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Button1();}});
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Button2();}});
// and it continues like that
}
public void Button1()
{
//sth
}
public void Button2()
{
//sth
}
// and continues like that
public static void main(String[] args)
{
clazz aplication = new clazz();
aplication.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aplication.setVisible(true);
}
}
для моего вопроса позволяет говорить Button3 будет один, который создает диаграмму (в другом кадре) Что должен ли я сделать, чтобы получить новый фрейм с диаграммой, основанной на данных, разыгранных предыдущими кнопками. Все другие темы, которые я видел, составляют диаграмму с использованием нового класса, а те, которые не являются сложными для меня (я рыба).
Благодарим за любую помощь!
EDIT
сделал это! Если вам известны более простые способы, мне интересно.
// the beginning is the same
// to the last button in the constructor (let's say the third one) I've added method chartt()
// here's the method chartt()
public void chartt() {
JFrame frame = new JFrame();
XYSeries DATA = new XYSeries("");
matrix1 = new double[641];
matrix2 = new double[641];
for (int x=0; x<=640; x++)
{
matrix1[x]= pressure(x*1000); //pressure is defined in another method with argument x
matrix2[x] = x;
}
for (int y=0;y<=640;y++)
{
DATA.add(matrix2[y], matrix1[y]);
}
XYDataset xyDataset = new XYSeriesCollection(DATA);
JFreeChart chart = ChartFactory.createXYLineChart(
"", "", "",
xyDataset, PlotOrientation.VERTICAL, true, true, false);
ChartPanel cp = new ChartPanel(chart)
{
public Dimension getPreferredSize()
{
return new Dimension(600, 600);
}
};
cp.setMouseWheelEnabled(true);
add(cp);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
frame.add(cp);
frame.setVisible(true);
}
Удачи всем!
Вы можете структурировать свой код лучше, используя разные кнопки, созданные методами. Например: 'button3.addActionListener (getButton3Listener())' – Gikkman
Хорошо. Попробую, но у меня все еще есть проблемы, чтобы сделать любую переменную глобальную, поэтому, когда я делаю другой метод, который имеет переменную из другой, я получаю ошибку (я пытался использовать _final_ раньше для ex. _double x = 10.0; _, но это не сработало для меня. Лучше всего! – Marcinnnn
* «Если мой вопрос написан неправильно». * «Что?»? [edit] (http://stackoverflow.com/posts/39976672/edit) и добавьте '?' в конец этого. –