Эта проблема кажется очень распространенной, но я не смог найти решение для моей проблемы. Ну, может быть, если бы я не был так n00bish при программировании, я бы все понял и решил бы проблему.JAVA- JFrame-не статический метод не может ссылаться на статический контекст
Во всяком случае, вот код:
package kalk;
import java.awt.Toolkit;
import javax.swing.JOptionPane;
/**
*
* @author BADASS BOSS
*/
public class Kalkulator extends javax.swing.JFrame {
/**
* Creates new form Kalkulator
*/
private double liczba1, liczba2;
private double wynik=0;
private int nrdzialania=0;
private boolean dopierwszej=true;
private Toolkit glownytoolkit;
//dzialania
//1-dodawanie
//2-odejmowanie
//3-mnozenie
//4-dzielenie
private double pobierzliczbe(String s)
{
double temp;
temp = 0;
try
{
temp = Double.valueOf(s);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, "FATAL ERROR!!" + e,"Coś się zepsuło!!!!", JOptionPane.ERROR_MESSAGE);
}
return temp;
}
private void robdzialanie()
{
String bufor;
liczba1 = pobierzliczbe(jTextField1.getText());
liczba2 = pobierzliczbe(jTextField3.getText());
bufor = "";
if (nrdzialania==1) wynik = liczba1 + liczba2;
else if (nrdzialania==2) wynik = liczba1 - liczba2;
else if (nrdzialania==3) wynik = liczba1 * liczba2;
else if (nrdzialania==4)
{
if (liczba2==0) bufor="FATAL ERROR!! Nie można dzielić przez zero!!!";
else wynik = liczba1/liczba2;
}
if (nrdzialania!=0) bufor = String.valueOf(wynik);
else bufor = "FATAL ERROR!! Argument jest pusty albo niepoprawny!!";
jTextField4.setText(bufor);
}
public Kalkulator() {
initComponents();
glownytoolkit = Toolkit.getDefaultToolkit();
}
private void dajnasrodek()
{
int x;
int y;
int szerokość_ekranu;
int wysokość_ekranu;
int wysokość_ramki;
int szerokość_ramki;
szerokość_ekranu = glownytoolkit.getScreenSize().width;
wysokość_ekranu = glownytoolkit.getScreenSize().height;
szerokość_ramki = this.getSize().width;
wysokość_ramki = this.getSize().height;
x = (szerokość_ekranu - szerokość_ramki)/2;
y = (wysokość_ekranu - wysokość_ramki)/2;
this.setLocation(x, y);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
////some unnecessary stuff I guess
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
//Kalkulator gc = new Kalkulator();
//gc.dajnasrodek();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
}
}
);
//Kalkulator gc = new Kalkulator();
//gc.dajnasrodek();
//ActionEvent klik;
//jButton18ActionPerformed();
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
///some unnecessary stuff
}
К сожалению о польском языке, но я надеюсь, что имена переменных не так важно понимать так или иначе.
Хорошо, так вот сделка: когда я пытаюсь ссылаться на dajnasrodek();
из основного метода, я получаю ошибку, как показано в заголовке - non static method cannot be referenced from a static context
. Я попытался изменить метод dajnasrodek()
на статический, но это не помогло, так как вместо него появляются другие ошибки.
Любые умные идеи? Любая помощь будет очень оценена! Заранее большое спасибо!!
В какой строке указана ошибка? Я попытался бы скомпилировать его сам, но я не настроен на то, что вы используете, и я не буду возиться со своими настройками, чтобы ответить на этот вопрос. (Вероятно, это будет закрыто, прежде чем я смогу ввести свой ответ в любом случае) –
Это то, чего я ожидал. Ну, я хочу ссылаться на метод dajnasrodek() из основного метода, но я даже не знаю, где его разместить ... Вы хотя бы знаете, что я имею в виду? Я могу казаться очень неясным в этом, поскольку я новичок в программировании. – user3161354
Или, проще говоря, метод dajnasrodek() означает «центрировать экран», и все, что я хочу сделать, - сделать программу автоматически центрировать экран после запуска. Любые идеи, как это сделать? Метод dajnasrodek() - это алгоритм, который я хочу запустить, но пока не повезло – user3161354