i am getting an error telling me that non static method addComponents ToPane(container) cannot be referenced from a static context.
i've just started programming just over two months so please bear with me.
package prototype;
import static com.oracle.util.Checksums.update;
import java.awt.*;
import java.util.Locale;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class NewClass {
final static boolean shouldFill = true;
final static boolean shouldWeightX = true;
final static boolean RIGHT_TO_LEFT = false;
public void addComponentsToPane(Container pane) {
if (RIGHT_TO_LEFT) {
pane.setLocale(Locale.UK);
}
JButton button;
JButton buttonc;
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
if (shouldFill) {
c.fill = GridBagConstraints.HORIZONTAL;
pane.setLayout(new GridBagLayout());
GridBagConstraints cc = new GridBagConstraints();
if (shouldFill) {
cc.fill = GridBagConstraints.HORIZONTAL;
}
button = new JButton("Button 1");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
pane.add(button, c);
try {
Image i = Toolkit.getDefaultToolkit().getImage("red.JPEG");
Image resize = i.getScaledInstance(200, 180, java.awt.Image.SCALE_SMOOTH);
ImageIcon ic = new ImageIcon(resize);
button.setIcon(ic);
buttonc = new JButton("", ic);
cc.fill = GridBagConstraints.HORIZONTAL;
cc.ipady = 20; //reset to default
cc.weightx = 0.0; //request any extra vertical space
cc.gridx = 2; //aligned with button 2
cc.gridwidth = 1; //2 columns wide
cc.gridy = 2; //third row
pane.add(button, ic);
} catch (Exception e) {
}
}
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("GridBagLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
The variable
ic
is only visible inside the scope of thetry/catch
block. Move the declaration of the variable out of the blockFor the updated code, forget about using
static
methods. The code applys to a particular instance of the class so should be an instance method