1
テキストを表示できるフラクショナルオブジェクトを作成するクラスを作成しています。私はそれらの間に3ピクセルのスペーサーを持つ黒い背景パネルと2つの白いパネルを上向きに向けています。各白いパネルにはJLabelが含まれています。Java:Swingで変更された埋め込みパネルの幅を制御する
これにより、分子、分母、および小数点が作成されます。分子と分母が同じ長さ(例えば1/2)であれば、すべてうまく動作します。しかし、分子と分母が異なるサイズ(例えば1/12)になると、パネルの1つが小さすぎて側面に沿って黒くなります。私は、小さなパネルをバックグラウンドパネルの幅いっぱいにするように強制しようとしていますが、これが正しく機能するようには見えません。ここに私のクラスです。
public class MakeFraction2 {
private JLabel jlabelNum;
private JLabel jlabelDen;
JPanel mainpanel = new JPanel();
JPanel numpanel = new JPanel();
JPanel denpanel = new JPanel();
private Font font3 = new Font("Monospaced", Font.BOLD, 17);
private Font font4 = new Font ("SansSerif", Font.BOLD, 17);
MakeFraction2(){
jlabelNum = new JLabel("Num");
jlabelDen = new JLabel("Den");
mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS));
numpanel.setLayout(new BoxLayout(numpanel, BoxLayout.X_AXIS));
denpanel.setLayout(new BoxLayout(denpanel, BoxLayout.X_AXIS));
mainpanel.setBackground(Color.BLACK);
numpanel.setBackground(Color.WHITE);
denpanel.setBackground(Color.WHITE);
numpanel.add(jlabelNum);
denpanel.add(jlabelDen);
mainpanel.add(numpanel);
mainpanel.add(Box.createRigidArea(new Dimension(1,2)));
mainpanel.add(denpanel);
}
public void setnumden(String num, String den) {
mainpanel.setBackground(Color.BLACK);
jlabelNum.setText(num);
jlabelDen.setText(den);
sizepanels();
}
void sizepanels(){
int width = mainpanel.getWidth();
int h1 = numpanel.getHeight();
int h2 = denpanel.getHeight();
int height = Math.max(h1, h2);
numpanel.setSize(width,height);
denpanel.setSize(width,height);
}
}
ポストあなたの問題の小さなコンパイルの例では分数の例を参照してください。 – blackcompe
この[Q&A](http://stackoverflow.com/questions/7448216/how-to-rendering-fraction-in-swing-jcomponents)も参照してください。 – trashgod