2016-10-11 2 views
1

Это мое первое сообщение, но отчаянные времена требуют отчаянных ходов. Моя проблема в том, что я создал 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); 

    } 

Удачи всем!

+0

Вы можете структурировать свой код лучше, используя разные кнопки, созданные методами. Например: 'button3.addActionListener (getButton3Listener())' – Gikkman

+0

Хорошо. Попробую, но у меня все еще есть проблемы, чтобы сделать любую переменную глобальную, поэтому, когда я делаю другой метод, который имеет переменную из другой, я получаю ошибку (я пытался использовать _final_ раньше для ex. _double x = 10.0; _, но это не сработало для меня. Лучше всего! – Marcinnnn

+0

* «Если мой вопрос написан неправильно». * «Что?»? [edit] (http://stackoverflow.com/posts/39976672/edit) и добавьте '?' в конец этого. –

ответ

0

Что я получаю от вашего вопроса, так это то, что, когда вы нажимаете последнюю кнопку, другой JFrame (возможно, вы уже ее разработали) позволяет назвать XYZ. XYZ будет содержать схему, разработанную вами.

так на ActionPerformed случае вам необходимо написать следующий код:

XYZ x = new XYZ(); 
x.setVisible(true); 
this.dispose(); // use this line if you wish to close the first frame with buttons. 

Надеется, что это помогает. Если есть что-то еще, о чем вы спрашиваете, просьба упомянуть об этом в комментариях.

+0

Вот и все. Я не проектировал этот другой фрейм, я даже не сделал диаграмму. Я просто не знаю, как это сделать внутри класса, который уже является фреймом. Пока я могу сделать только один кадр в классе, который простирается от JFrame, а также может создавать диаграммы, которые простираются от ApplicationFrame или JFreeChart. Но делать кадр внутри кадра (внутри = a нажмите кнопку), и дополнительно, чтобы сделать этот второй кадр диаграммой - это невозможно для меня. Вот почему мне нужна помощь. – Marcinnnn

+0

все сделано наконец. см. основную должность – Marcinnnn

Смежные вопросы