私が作業しているUIは、ユーザーがムービーを選択して再生できるパネルを表示します。再生、一時停止などのコントロールがあります。GridBagLayout - 1行の高さによって次の行の幅が変更されます
レイアウトは私が望むように見えます。パネルはGridBagLayoutを使用します。行2はステータスメッセージのテキストエリアを表示し、行3はボタンと進行状況バーを表示するパネルを表示します。
私が問題になっているのは、テキスト領域にテキスト行が多すぎると、行3のボタンが折り返してしまうことです。これは外枠の高さに関係なく行われます。
行2の高さが行3の幅に影響しています。この動作はわかりません。誰かが私に間違ってやっていることを教えてもらえ、それをどうやって解決できるのか誰かが私に教えてくれるのだろうかと思っています私はコードを添付しました。
少し異なるトピックで、コードを見ている場合は、一番下のコンポーネントと一番外側のパネルの間に余白を残す方法も提案できますか?
ご協力いただきありがとうございます。
よろしく、
ピーター
Center and Bottom
ための1
JPanel
各ので、あなたの
JTextArea
あなた
GridBagLayout
意志サーバー目的とその後
BorderLayout
まで、あなたのためのトリックを行います追加
private static JButton CreateImageButton(String fileName) {
JButton retVal = new JButton("xxx");
return retVal;
}
public MoviePanel() {
this.setLayout(new GridBagLayout());
this.setBackground(Color.WHITE);
JButton btnRefresh = CreateImageButton("refresh.png");
GridBagConstraints c = new GridBagConstraints();
c.gridx=0;
c.gridy=0;
c.fill = GridBagConstraints.NORTH;
c.insets.left = 10; c.insets.right = 10; c.insets.top = 10;
this.add(btnRefresh, c);
JComboBox cbMovieList = new JComboBox();
c = new GridBagConstraints();
c.gridx = 1;
c.gridy = 0;
c.fill = GridBagConstraints.HORIZONTAL;
c.insets.right = 10; c.insets.top = 10;
c.weightx = 1.0;
this.add(cbMovieList, c);
JButton btnAuthorize = new JButton("Get Info");
c = new GridBagConstraints();
c.gridx = 1;
c.gridy = 1;
c.anchor = GridBagConstraints.WEST;
c.insets.top = 10;
this.add(btnAuthorize, c);
JTextArea txtInfo = new JTextArea();
txtInfo.setFont(new Font("SansSerif", Font.BOLD, 12));
txtInfo.setBackground(Color.cyan);
// txtInfo.setText("abc\ndef");
txtInfo.setText("abc\ndef\nghi\njkl\nmno\npqr\nstu\nvwx\nyz");
c = new GridBagConstraints();
c.gridx = 1;
c.gridy = 2;
c.anchor = GridBagConstraints.NORTHWEST;
c.weighty = 1.0;
c.insets.top = 10;
this.add(txtInfo, c);
JPanel controllerOuter = new JPanel();
controllerOuter.setLayout(new BoxLayout(controllerOuter, BoxLayout.Y_AXIS));
controllerOuter.setBorder(BorderFactory.createRaisedBevelBorder());
FlowLayout controllerLayout = new FlowLayout(FlowLayout.CENTER);
controllerLayout.setHgap(0);
JPanel controller = new JPanel(controllerLayout);
controller.setBorder(new EmptyBorder(10, 10, 10, 10));
Dimension dim = new Dimension(60, 40);
JButton btnPlay = CreateImageButton("play.png");
btnPlay.setPreferredSize(dim);
controller.add(btnPlay);
JButton btnPause = CreateImageButton("pause.png");
btnPause.setPreferredSize(dim);
controller.add(btnPause);
JButton btnStop = CreateImageButton("stop.png");
btnStop.setPreferredSize(dim);
controller.add(btnStop);
JButton btnForward = CreateImageButton("forward.png");
btnForward.setPreferredSize(dim);
controller.add(btnForward);
JComboBox cbAspectRatio = new JComboBox();
cbAspectRatio.setPreferredSize(new Dimension(100, 40));
cbAspectRatio.setBorder(new EmptyBorder(0, 10, 0, 0));
controller.add(cbAspectRatio);
controllerOuter.add(controller);
JProgressBar pbProgress = new JProgressBar(0, 100);
pbProgress.setPreferredSize(new Dimension(350, 40));
pbProgress.setBorder(new EmptyBorder(0, 10, 10, 10));
pbProgress.setValue(50);
pbProgress.setString("50/100");
pbProgress.setStringPainted(true);
pbProgress.setForeground(Color.BLUE);
pbProgress.setBorderPainted(true);
controllerOuter.add(pbProgress);
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 3;
c.gridwidth = 2;
c.weightx = 1.0;
this.add(controllerOuter, c);
}
_wrap around_とはどういう意味ですか?あなたのコードをTAで別のテキストで数回走らせました。ボタンは常に同じ場所にあります。投稿を編集して、表示されている問題のスクリーンショットを追加することはできますか? –
イメージを追加しました。あなたが見ることができるように、フレームの高さを減らした後で5番目のコントロールがラップしています。 – Peter
実際には、ラップされたComboBoxでボタンのラッピングについて話したので、私は混乱しました。私はすぐに –