Witam.
Ostatnio zacząłem się bawić trochę w pisanie gui w javie i mam kilka pytań jak co działa. Zrobiłem sobie klasę testową i robię coś takiego:
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Tests extends JFrame{
public Container container;
public Tests(){
container = getContentPane();
container.setVisible(true);
container.setSize(200, 300);
// setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// setSize(200, 200);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
new Tests();
}
});
}
}
Czemu nie za komentowany kod w konstruktorze nie chce mi działać? A ten za komentowany działa?
Mam jeszcze jedno pytanko czemu jak napiszę sobie coś takiego:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Tests extends JFrame{
JPanel one, two, three;
public Tests(){
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(3,1));
one = new JPanel();
two = new JPanel();
three = new JPanel();
one.setPreferredSize(new Dimension(100, 100));
two.setPreferredSize(new Dimension(100, 200));
three.setPreferredSize(new Dimension(100, 300));
one.setBackground(Color.BLACK);
two.setBackground(Color.RED);
three.setBackground(Color.GREEN);
add(one);
add(two);
add(three);
pack();
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
new Tests();
}
});
}
}
Czemu moje komponenty nie są takiego rozmiaru jak chcę?