Установка моего компонента в указанном месте
То, что я хочу сделать, это поместить мой компонент ближе к правой стороне моего приложения. Второй вариант - поместить его в указанные координаты x,y. Однако я пытался setBounds()
setLocation()
а также add(component, BorderLayout.LINE_END)
funcions. Ничто не работает для меня. Что не так с моим кодом?
public class MapaSwiata extends JPanel implements ActionListener {
private BufferedImage mapa;
private File imageFile;
public MapaSwiata(){
super();
imageFile = new File("C:\\Users\\Katie\\Documents\\Eclipse\\Samolot\\src\\Pics\\img_mapa.jpg");
try {
mapa = ImageIO.read(imageFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JOutlookBar outlookBar = new JOutlookBar();
outlookBar.addBar( "Pogoda", getDummyPanel("One"));
outlookBar.addBar( "Informacje o locie", getDummyPanel("Two" ));
outlookBar.addBar( "Rozkład Lotow", getDummyPanel( "Three" ) );
outlookBar.setVisibleBar( 2 );
add(outlookBar, BorderLayout.LINE_END);
}
public static JPanel getDummyPanel( String name )
{
JPanel panel = new JPanel( new BorderLayout() );
panel.add( new JLabel( name, JLabel.CENTER ) );
return panel;
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(mapa, 0, 0, getWidth()-300, getHeight()-150, null);
}
}
Я также пытался положить в JButton
или что-то другое. Все всегда появляется в верхнем центре приложения. Извините за польские имена переменных.
заранее спасибо
1 ответ
Если ты хочешь это BorderLayout.LINE_END
имеет эффект, вы должны применить BorderLayout
к Container
, Для этого просто добавьте
setLayout(new BorderLayout());
вашему конструктору MapaSwiata()
,
ПРИМЕЧАНИЕ. Ваши дочерние панели не требуют BorderLayout
,