私はJavaで何かをしようとしています。そこでは、オブジェクトをの特定のx, y
座標に配置するだけJFrame
です。使用するレイアウト、またはこれを行うために何をする必要があるかを知る必要があります。どんな助けでも素晴らしいでしょう。ありがとう
質問する
1229 次
2 に答える
5
レイアウトを使用してこれを行いnull
、コンポーネントでsetLocationまたはsetBoundsを呼び出します。ただし、これを一般的に行うべきではありません。これにより、あるプラットフォームでは見栄えが良く、別のプラットフォームではひどい、更新と保守が非常に難しい非常に柔軟性のないGUIが作成されます。これをしないでください。
于 2013-03-08T02:08:59.067 に答える
3
この例では、空の境界線を使用して「空白」(この場合は「緑の領域」) を提供しています。もちろん、フレーム内に他のコンポーネントがある場合、この「特定の座標」はすべてより複雑になりますが、特定のコンポーネントに空白を提供するために同じ手法を使用できます。
コンポーネントの既存の境界線を保持するために、空白を提供する場合は通常、コンポーネントをパネルでラップするのが最善であることに注意してください。
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
class SpecificCoords {
public static void main(String[] args) {
final int specificX = 40;
final int specificY = 20;
Runnable r = new Runnable() {
@Override
public void run() {
// imagine this is our 'frame'
JPanel gui = new JPanel(new BorderLayout());
JTextField tf = new JTextField(10);
JPanel borderPanel = new JPanel(new GridLayout());
borderPanel.add(tf);
borderPanel.setBorder(new EmptyBorder(
specificX, specificY,
specificX, specificY));
borderPanel.setBackground(Color.GREEN);
gui.add(borderPanel);
JOptionPane.showMessageDialog(null, gui);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
}
}
于 2013-03-08T03:45:15.927 に答える