我想要做的是将我的组件放在我的应用程序的右侧。第二个选项是将其放在指定的x,y坐标中。但是,我尝试了setBounds()
setLocation()
和add(component, BorderLayout.LINE_END)
个功能。什么都不适合我。我的代码有什么问题?
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
或其他内容。一切都始终出现在应用程序的顶部中心。对不起波兰的变量名称。
提前致谢
答案 0 :(得分:1)
如果您希望BorderLayout.LINE_END
生效,则必须将BorderLayout
应用于Container
。为此,只需添加
setLayout(new BorderLayout());
到您的构造函数MapaSwiata()
。
注意:您的子面板不需要BorderLayout
。