SwingでFlowLayoutマネージャを使用して単純なオブジェクトを配置しようとしています。JPanelはJFrameの全領域を取ります
私は基本的に小さなプログラムを作成しました。フレームのサイズを設定してから、いくつかのJLabelを作成し、次にJPanelを作成しました。
私はJPanelを300x300のsetSizeに置き、それを視覚的に見るために赤色に変更しました。しかし、それはJFrameの全領域を占め、setsizeはそれに影響を与えないようです。
私は間違っていますか?私はそれをグーグルで試して、コードをいくつか変更しましたが、運はありません。私も読んだが、明らかに正確に理解していない、オラクルのコード... 助けてください。下は私のコードです。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Main extends JFrame{
public String frameTitle, projectNameString, countryNameString, projectDetailString, requestDateString;
private int offerRevisionVal;
private Toolkit toolkit;
// UPPER OBJECTS
//private JLabel projectLabel, countryLabel, projectDetailLabel, offerLabel, requestDateLabel, emptyLabel;
public Main(){
frameTitle = "CRANES QUOTATIONS";
// MAIN INSTANCE VARIABLES DEFINITION
projectNameString = "Project Title"; // TO ADD LATER
countryNameString = "Brazil"; // TO ADD LATER
projectDetailString = "32 Cranes biTravi"; // TO ADD LATER
offerRevisionVal = 01; // TO ADD LATER
requestDateString = "20-April-2017"; // tTO ADD LATER
this.setTitle(frameTitle);
JPanel panel = new JPanel();
panel.setBackground(Color.red);
panel.setSize(new Dimension(300,300));
//projectLabel = new JLabel(projectNameString);
//countryLabel = new JLabel(countryNameString);
//projectDetailLabel = new JLabel(projectDetailString);
//offerLabel = new JLabel(String.valueOf(offerRevisionVal));
//requestDateLabel = new JLabel(requestDateString);
this.add(panel);
// ===========================================================================
this.setSize(800, 300); // set the height and width of my window
this.centerToScreen();
this.setVisible(true); // set visibility
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // sets up what it does when I close the App.
}
// Method to center to screen
public void centerToScreen(){
toolkit = getToolkit();
Dimension size = toolkit.getScreenSize(); // gets the screen size
setLocation(size.width/2 - getWidth()/2, size.height/2 - getHeight()/2); // sets the location
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
new Main();
}
});
}
}
[レイアウトマネージャのビジュアルガイド](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)と[コンテナ内のコンポーネントのレイアウト] (http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html) – MadProgrammer
これは私が検索した最初の場所です。しかし、そこにはパブロが述べている問題は言及されていない。私はそれが論理がcomportamentalバグによって上書きされたらそれが嫌い....正しい道を学ぶのは難しい。私は仕事から帰ってきて、それがうまくいくことを願って、今晩勉強します。 – zypa
他の場所は、「JFrame'のためのJavaDocs」(https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html)です。*「デフォルトのコンテンツペインにBorderLayoutマネージャが設定されます "* – MadProgrammer