ウィンドウ上のjContentPane上にJPanelを配置し、レイアウトをGridBagLayoutにしてそのJPanel上にJTextFieldを置くとそのJTextFieldの幅がほぼ0になります。下記のプログラムがその一部です。gridBagConstraints2.fill をnullにしたままJTextFieldの幅を広げたいのですがどうしたらいいでしょうか?教えてください。
private JPanel getJPanel() {
if (jPanel == null) {
GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
jPanel = new JPanel();
jPanel.setLayout(new GridBagLayout());
jPanel.setPreferredSize(new java.awt.Dimension(200,150));
gridBagConstraints2.gridx = 0;
gridBagConstraints2.gridy = 0;
gridBagConstraints2.weightx = 1.0;
gridBagConstraints2.fill = java.awt.GridBagConstraints.NONE;
gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints2.gridwidth = 4;
jPanel.add(getJTextField(), gridBagConstraints2);
}
return jPanel;
}
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setColumns(32);
}
return jTextField;
}
No.5ベストアンサー
- 回答日時:
#2です。
えーと、setMinimizeSizeでうまくいきませんでした?
(fillはNONEでもnullでも動きは同じだと思います。)
いちおう、setPreferredSizeでだめな理由もしらべてみました。
JTextFieldにseColumns(32)してますよね?
これをやると、setPreferredSizeで指定した値よりも、
getPreferredSizeはカラム数のほうを優先して幅を返すようになります。
で、32文字とすると、推奨幅は親コンポーネントの幅200を越えてしまい
ますので、レイアウト時に無視されてしまうようです。
最小サイズを指定するのに抵抗があるようでしたら、
JTextFieldでgetPreferredSizeをオーバライドして、固定値を
返すようにしても良いかもしれません。
No.4
- 回答日時:
#No.1です。
何度もすみません。あれ??変わらないですか??おかしいですね?私の環境では動いてるんですが・・
いちおう、サンプルプログラム置いておきます。意味ないかもしれませんが。
これ以上書きこむと混乱させるだけなので止めておきます。上級者の方あとお願いします。すみませんでした。
●アプレット
import java.awt.*;
import javax.swing.*;
public class test1 extends JApplet
{
public void init()
{
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
getContentPane().setLayout(gridbag);
JTextField text = new JTextField();
c.fill = GridBagConstraints.NONE;
c.weightx = 1.0;
text.setPreferredSize(new Dimension(60,20));
gridbag.setConstraints(text,c);
getContentPane().add(text);
}
}
●アプレットじゃない方
import java.awt.*;
import javax.swing.*;
public class test2
{
public static void main(String args[])
{
JFrame win = new JFrame();
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setBounds(10,10,400,300);
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
win.getContentPane().setLayout(gridbag);
JTextField text = new JTextField();
c.fill = GridBagConstraints.NONE;
c.weightx = 1.0;
text.setPreferredSize(new Dimension(60,20));
gridbag.setConstraints(text,c);
win.getContentPane().add(text);
win.show();
}
}
No.3
- 回答日時:
#No1です。
トンチンカンナ回答をしてすみませんでした。勉強しなおして!
setPreferredSize();
これでいけるとおもいます。
JTextField text = new JTextField();
c.fill = GridBagConstraints.NONE;
c.weightx = 1.0;
text.setPreferredSize(new Dimension(30,20));
たぶん動くとおもいます。できなかったら再びすみません。勉強不足ですみません!
参考URL:http://www.tu-chemnitz.de/global-text/doc/java/t …
この回答への補足
どうも、ありがとうございます。text.setPreferredSize(new Dimension(30,20));
をつけても、なにも変わらないですね。
No.2
- 回答日時:
あまり良い方法ではありませんが、
> gridBagConstraints2.fill をnullにしたまま
ということなら、jTextFieldにsetMinimumSizeで最小サイズを設定してしまうというのはどうでしょう?
(setPreferredSizeでは効かないと思うので・・・)
Dimension dm = jTextField.getMinimumSize();
jTextField.setMinimumSize( new Dimension(100,dm.height ) );
この回答への補足
質問文に間違えがあったので、訂正します。
> gridBagConstraints2.fill をnullにしたまま
gridBagConstraints2.fill をNONEにしたままの間違えです。
No.1
- 回答日時:
私も同様のことでなやんでいましたが、
gridBagConstraints2.fill = java.awt.GridBagConstraints.NONE;
これを、gridBagConstraints2.fill = java.awt.GridBagConstraints.BOTH;
または、gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL;
で解決できないでしょうか?
わたしは、JAVA初心者なので、参考にならないかもしれませんが・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<forEach> 内で供給された "ite...
-
setAttribute(String, int)は適...
-
ActionForm form にnullが入っ...
-
ファイル名を動的に生成したい
-
干支の計算で。。。
-
シャットダウンフックが呼ばれない
-
import 文
-
「例外 *** は対応する try 文...
-
eclipseに記述したjavaファイル...
-
Javaじゃんけんゲーム
-
かなり初歩的なプログラミング...
-
文字列を数式に
-
アプレットが初期化されていま...
-
透過GIFの判定の仕方ありますか?
-
アプレットを実行すると、×が表...
-
アルファベットのソート
-
HTMLでのTableタグデータ取得方法
-
応用情報技術者試験の令和元年...
-
1~100までの数字を表示し、か...
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
「例外 *** は対応する try 文...
-
干支の計算で。。。
-
Selenium IDEでexportしたコー...
-
Javaを使ってデジタル時計を作...
-
ColabでのPytorchのエラー
-
importするには java.io.*; imp...
-
生年月日と今日の日付から年齢...
-
ファイル名を動的に生成したい
-
文字列を数式に
-
<forEach> 内で供給された "ite...
-
シャットダウンフックが呼ばれない
-
Javaからストアド実行(配列項目)
-
ActionForm form にnullが入っ...
-
setAttribute(String, int)は適...
-
(急募)JavaカレンダーをGUI可に...
-
文字サイズが可変のラベル
-
Java での グローバルIP取得
-
python OpenPyXLを使って出力結...
-
データの外挿について
おすすめ情報