第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調(diào)整 JDialog 和 JTable 列大小時出現(xiàn)問題

調(diào)整 JDialog 和 JTable 列大小時出現(xiàn)問題

暮色呼如 2023-07-28 09:54:51
我正在創(chuàng)建一個帶有 的JDialog窗口JTable,并嘗試使其對不同的屏幕尺寸具有“響應(yīng)性”。由于窗口和表格大小可能會發(fā)生變化,我按百分比設(shè)置列寬度。此時沒有問題。第一次顯示該表時,一切看起來都很好。一旦表被重新加載(由于修改或其他原因),列的大小看起來會有所不同,但表和窗口的大小仍然相同。這種情況僅在第一次重新加載時發(fā)生,然后每次重新加載時所有內(nèi)容都保持相同的大小。我使用JOptionPane消息對話框在每次加載時顯示表格寬度,然后我發(fā)現(xiàn)了問題。第一次加載表時使用不同的大?。↗ScrollPane首選大小),然后下一次使用由于調(diào)整大小操作而應(yīng)有的大小。第一次加載(圖片)第二次加載(圖)真正的問題是為什么?我已經(jīng)嘗試將調(diào)整大小代碼移動JDialog到方法上的不同位置initComponents()(創(chuàng)建全局 Dimension 變量),但同樣的情況仍然發(fā)生。如果我刪除調(diào)整大小的JDialog代碼,一切都會很好,但這是膽怯的方式,哈哈。
查看完整描述

1 回答

?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個贊

最初的問題是您initComponents提前調(diào)用,即在應(yīng)用您想要的尺寸之前調(diào)用。pack因此,在組件方法中調(diào)用initComponents可將面板縮小到最小尺寸。

之后您更改了對話框的大小(通過調(diào)用setSize(w,h)),但這并沒有直接影響所涉及的組件。但是,當(dāng)對話框設(shè)置為visible組件時,組件會自動調(diào)整以適合定義的尺寸。這不適用于您的列大小,因?yàn)槟鷽]有定義ComponentListener會觸發(fā)此操作的列大?。ㄕ垍㈤喯旅娴牡诙€示例)。

update這導(dǎo)致第一次單擊按鈕來考慮組件的調(diào)整大小,因此它們被應(yīng)用到列。

要解決不同大小的問題,請將構(gòu)造函數(shù)中的方法調(diào)用更改為
(下面進(jìn)一步介紹構(gòu)造函數(shù)的完整示例):

int w = (int) (Math.round(d.getWidth()) / 2);

int h = (int) (Math.round(d.getHeight()) / 2);

setPreferredSize(new Dimension(w, h));


initComponents();

setSize(new java.awt.Dimension(0, 0));您可能想從您的方法中刪除initComponents()。


如果您想在用戶手動調(diào)整對話框大小時保持列大小,請考慮添加 a?ComponentListener,作為另一個示例,請檢查此answer.

這也可以用作原始代碼的替代解決方案,但首先正確定義大小可能會更清晰。

public Test(Dimension d) {


? ? int w = (int) (Math.round(d.getWidth()) / 2);

? ? int h = (int) (Math.round(d.getHeight()) / 2);

? ? setPreferredSize(new Dimension(w, h));


? ? initComponents();


? ? setLocationRelativeTo(null);

? ? bUpdate.addActionListener(new ActionListener() {

? ? ? ? public void actionPerformed(ActionEvent e) {

? ? ? ? ? ? cargarProductos();

? ? ? ? }

? ? });


? ? this.addComponentListener(new ComponentAdapter() {

? ? ? ? ?@Override

? ? ? ? ?public void componentResized(ComponentEvent e) {

? ? ? ? ? ? ?cargarProductos();

? ? ? ? ?}

? ? });

}


查看完整回答
反對 回復(fù) 2023-07-28
  • 1 回答
  • 0 關(guān)注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號